您好我试图以动态方式发送ID,这里是代码:
function formsub(val){
val2 = "form#" + val.toString() + " :input";
val3 = "form#formmain :input";
$(val3).each(function () {
var input = $(this);
alert($(this).val());
});
}
如果有人点击表单中的提交按钮,则会调用formsub
,但问题是我收到错误:
Uncaught exception: Syntax error , unrecognized expression ''
我尝试使用val3
并且它工作正常但是当我使用val2
时,它会给我错误,但它们是相同的值。
<form id='formmain' method='post' onsubmit='formsub(this.id)'>
<label>Name</label>
<input type='textbox' required />
<span style='color:red;'>*</span>
<br/>
<label>Male</label>
<input type='radio' required />
<span style='color:red;'>*</span>
<br/>
<label>Female</label>
<input type='radio' required />
<span style='color:red;'>*</span>
<br/>
<input type='submit' />
<br/>
</form>
上面的代码适用于表单。
提前致谢
答案 0 :(得分:3)
正如其他人和我所提到的,冒号的位置在两个字符串中都是不同的,这就是你在一个案例中得到错误的原因。
但是,如果直接使用DOM元素,则可以避免整个字符串连接。
HTML:
<form id='formmain' method='post' onsubmit='formsub(this)'>
JS:
function formsub(ele){
$(ele).find(':input').each(function () {
// ...
});
}
如果使用jQuery来绑定事件处理程序,那就更好了,例如:
$('form').on('submit', formsub);
// or $('#formmain').on('submit', formsub);
在事件处理程序中,this
将引用表单元素。详细了解事件处理:http://learn.jquery.com/events/。
答案 1 :(得分:2)
替换它:
val2 = "form#" + val.toString() + ": input"; // form#formmain: input
用这个:
val2 = "form#" + val.toString() + " :input"; // form#formmain :input
同样是一个建议,因为 ID 应该是唯一的,您只需使用ID而不是form#ID
,例如:
val2 = "#" + val.toString() + " :input"; // #formmain :input
此外,您可以修改js,如:
function formsub(val) {
val2 = "#" + val.toString() + " :input";
val3 = "#formmain :input";
$(val2).each(function () {
alert(this.value);
});
}
答案 2 :(得分:2)
尝试使用
val2="form#"+val+" :input";
让我知道这有用吗?
答案 3 :(得分:2)
正如我对代码进行分析,我发现val2和val3之间存在细微差别:
用这个替换你的val2:
val2="form#"+val.toString()+" :input";
因为你已经忘记了空间。
答案 4 :(得分:2)
:
和input
之间没有空格:input
function formsub(val){
val2="form#" + val.toString() + ":input"; // no space between : and input
val3="form#formmain :input";
$(val3).each(function(){
var input = $(this);alert($(this).val());
});
}
答案 5 :(得分:1)
尝试
$("form#" + val.toString() + ":input").each(function(){
var input = $(this);
alert(input.val());
});