有几个jquery的问题想向大家请教下,以下是代码,功能很简单,有一个按钮,本身的value是CheckMsg,在我点第一下的时候会进行检查信息操作(此操作未写在代码里),同时将value值改为SendMsg,然后再点一下,就会进行发送信息操作。
$(document).ready(function () {
$("#btSendMsg").click(function () {
if ($("#btSendMsg").attr("value") == "CheckMsg") {
alert($("#btSendMsg").attr("value"));
$("#btSendMsg").attr("value", "SendMsg");
alert($("#btSendMsg").attr("value"));
}
else {
SendMsg();
}
});
});现在我遇到几个问题,应该是我对JQUERY里面的一些机制不太熟悉,但是这几天也查了很多资料,没什么头绪,现在在这里向大家请教下:
1.我用IE7进行调试的时候,我按了按钮,结果直接实现了SendMsg(),也就是说本来判定应该成功的却判定失败了,不知道为什么。
2.我在IE8和firefox中调试的时候,倒是成功了,页面分别弹出CheckMsg和SendMsg两个值,但是这时候页面刷新了,我再按的时候又重新弹出了这两个值,也就是这样我会一直处于检查信息状态,这就让我很郁闷,因为JAVASCRIP没基础,这次是边学边做的,所以想会不会是JAVASCRIP有什么机制我不知道的,所以想问问大家。
$(document).ready(function () {
$("#btSendMsg").click(function () {
if ($("#btSendMsg").attr("value") == "CheckMsg") {
alert($("#btSendMsg").attr("value"));
$("#btSendMsg").attr("value", "SendMsg");
alert($("#btSendMsg").attr("value"));
}
else {
SendMsg();
}
});
});现在我遇到几个问题,应该是我对JQUERY里面的一些机制不太熟悉,但是这几天也查了很多资料,没什么头绪,现在在这里向大家请教下:
1.我用IE7进行调试的时候,我按了按钮,结果直接实现了SendMsg(),也就是说本来判定应该成功的却判定失败了,不知道为什么。
2.我在IE8和firefox中调试的时候,倒是成功了,页面分别弹出CheckMsg和SendMsg两个值,但是这时候页面刷新了,我再按的时候又重新弹出了这两个值,也就是这样我会一直处于检查信息状态,这就让我很郁闷,因为JAVASCRIP没基础,这次是边学边做的,所以想会不会是JAVASCRIP有什么机制我不知道的,所以想问问大家。
//全都修改为:
$("#btSendMsg").val();
//改为:
$("#btSendMsg").val("SendMsg");
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title> new document </title>
<meta name="keywords" content="">
<meta name="description" content="">
<script type="text/javascript" src="js/jq.js"></script>
</head>
<script type="text/javascript">
<!--
$(document).ready(function () {
$("#btSendMsg").click(function () {
if ($("#btSendMsg").attr("value") == "CheckMsg") {
alert($("#btSendMsg").attr("value"));
$("#btSendMsg").attr("value", "SendMsg");
alert($("#btSendMsg").attr("value"));
}
else {
SendMsg();
}
});
});
function SendMsg () {
alert(1);
}
//-->
</script>
<body>
<input type="button" value="CheckMsg" id="btSendMsg"/>
</body>
</html>
为什么呢?我看的jqeury书上就说的用attr获取和修改属性值啊。
val()是不是专门针对value这个属性才能用啊?
The .val() method is primarily used to get the values of form elements.
(.val()方法主要用来获取表单元素的值。)
这样啊,那attr为什么不行呢?
还有我用你的方法后还是刷新页面并且button返回原来的值了,也就是没解决。。
BUTTON那句代码是这样的:
<button id = "btSendMsg" value="CheckMsg">检查信息</button>
是不是这样的话每刷新一次页面就会变回原来的value值了?
每次按完按钮后刷新是因为alert执行的问题么?
我就是问一下刷新后是不是就变回原来值了?还有是否执行完alert后就会自动刷新页面?
<form onsubmit="return false;">
你一提,我试了下,我把button放在了form之外,成功了。。我再说下我的本意吧,我想点第一下的时候将value值改为SendMsg,然后再点一下,就会进行发送信息操作。
但我现在遇到的问题是,我点了一下后,出现alert的窗口,我点击确定后,系统执行完按钮绑定的jquery方法后,会刷新,我的button值又回去了。之前我想问下是不是alert后会重新载入也页面,但是现在把button放在form外面后发现正常了,所以我想问是不是因为我的body有onload事件,所以导致执行完jquery的方法后表单刷新了?
<script>
function CheckMsg(f){
if(f.a.value==''){
alert('不能为空!'); return false
}
}
</script>
<form method=post action="xxx.asp" name=frm onsubmit="return CheckMsg(this)">
<input type=text id=a name=a />
<input type=submit id=s name=s value='发送信息' />
</form>这样就可以了呀
<script>
function CheckMsg(f){
if(f.a.value==''){
alert('不能为空!'); return false
}
}
</script>
<form method=post action="xxx.asp" name=frm >
<input type=text id=a name=a />
<input type=submit id=s name=s value='发送信息' onclick="return CheckMsg(this.form)" />
</form>
我好像发现问题了,我说下你看看我对不对好么?
我之前用的<button>检查信息</button>来定义的按钮,这样好像就被默认为<asp:Button>的格式了,导致我点一下这个按钮就会提交一次表单,然后刷新表单,现在我用的<input type="button" id = "btSendMsg" value="检查信息"></button> 这种button点击后就不会提交表单了,这样我修改的value值就还在了。
我好像发现问题了,我说下你看看我对不对好么?
我之前用的<button>检查信息</button>来定义的按钮,这样好像就被默认为<asp:Button>的格式了,导致我点一下这个按钮就会提交一次表单,然后刷新表单,现在我用的<input type="button" id = "btSendMsg" value="检查信息"></button> 这种button点击后就不会提交表单了,这样我修改的value值就还在了。
和
<button></button>
都会触发submit提交表单 刷新<input type="button" />则不会默认提交表单
触发submit提交表单的按钮:
<input type="submit">
<input type="image">
<button></button>不提交表单的按钮:
<input type="button">
<input type="reset">