我有一个像这样的简单形式
<form>
<label class="radio-inline"><input type="radio" name="optradio" value="yes" checked="checked">Yes</label>
<label class="radio-inline"><input type="radio" name="optradio" value="no">No</label><br><br>
<button type="submit" class="btn artBtn" title="click here ">Submit ></button>
</form>
此表单用于多个页面,但我认为这不重要。 然后我做以下
$(".artBtn").click(function(e) {
e.preventDefault();
if ($('input[name="optradio"]:checked').size() > 0) {
$('.contentDiv').html('<p>Thanks!</p>');
submitData($(this).val());
}
});
为什么我发送给submitData的值是空的?我已经尝试通过输入直接检索它,但如果我这样做它是未定义的。如何获得适当的选定值?
由于
答案 0 :(得分:3)
在click
处理程序中,this
表示单击的元素。这意味着您要发送按下的提交button
的值。因为没有价值,你会收到空白。
发送所选单选按钮的值:
submitData($('input[name="optradio"]:checked').val());
所以完整版可能是这样的:
$(".artBtn").click(function(e) {
e.preventDefault();
var $radio = $('input[name="optradio"]:checked');
if ($radio.length){
$('.contentDiv').html('<p>Thanks!</p>');
submitData($radio.val());
}
});
if ($radio.length)
测试非零长度,看看是否匹配。$
为jQuery对象添加前缀的标准,以明确什么是jQuery对象。答案 1 :(得分:3)
详细说明@TrueBlueAussie所说的内容,在click
事件的范围内,$(this)
将引用按钮本身。要解决此问题,您可以将单选按钮分配给变量,稍后再引用它,如此
$(".artBtn").click(function(e) {
e.preventDefault();
var $radio = $('input[name="optradio"]:checked');
if ($radio.size() > 0) {
$('.contentDiv').html('<p>Thanks!</p>');
submitData($radio.val());
}
});
答案 2 :(得分:1)
您正在使用this
,就好像它是被检查的单选按钮一样。这在事件中起作用,作为对导致事件触发的元素的引用。这里存在于单击artBtn按钮引起的click事件中,因此它保存对按钮的引用。很明显,您的按钮不具有价值,因此您无法获得任何结果。
如果你想获得radiobutton的价值,试试这个:
$(".artBtn").click(function(e) {
e.preventDefault();
var radio = ($('input[name="optradio"]:checked');
if(radio.length > 0)
{
$('.contentDiv').html('<p>Thanks!</p>');
submitData(radio.val());
}
});