我有输入框以及表<td>
中的复选框,如下所示,
<td>
<input class="Comment" type="text" data-db="comment" data-id="{{uid}}"/>
<input type="checkbox" id="summary" title="Check to set as Summary" />
</td>
根据复选框,只有输入框的内容将存储在DB中。
在JS文件中,我尝试了
var updateComment = function( eventData )
{
var target = eventData.target;
var dbColumn = $(target).attr('data-db');
var api = $('#api').val();
var newValue = $(target).val();
var rowID = $(target).attr('data-id');
var summary = $('#summary').is(':checked');
params = { "function":"updatecomments", "id": rowID, "summary": summary };
params[dbColumn] = newValue;
jQuery.post( api, params);
};
$('.Comment').change(updateComment);
但var summary
始终返回false
。
我尝试了很多方法prop('checked')
,(#summary:checked).val()
所有方法都只返回false。
如何解决这个问题?
答案 0 :(得分:1)
你错过了jQuery函数 - &gt; $
$('#summary').is(':checked')
('#summary')
是括在括号中的字符串。 $
是jQuery函数的别名,因此$('#summary')
使用选择器作为参数调用jquery。
答案 1 :(得分:1)
您的表格中似乎有多行checkboxes + input
字段。因此,$('#summary').is(':checked')
将返回第一个匹配元素的值,因为DOM中的id
应该是唯一的。
所以,修改你的代码如下:
<td>
<input class="Comment" type="text" data-db="comment" data-id="{{uid}}"/>
<input type="checkbox" class="summary" title="Check to set as Summary" />
</td>
而且,您可以这样写,而不是$('#summary').is(':checked');
:
var summary = $(target).parent().find(".summary").is(':checked');
通过这样做,我们确保仅使用所选输入字段检查复选框的值。
更新:用于收听这两个条件,即当首先选中复选框,然后键入输入框和首次输入输入框然后选中>强>:
为复选框注册更改事件:
// Whenever user changes any checkbox
$(".summary").change(function() {
// Trigger the "change" event in sibling input element
$(this).parent().find(".Comment").trigger("change");
});
答案 2 :(得分:0)
像这样使用
var summary = $('#summary').prop('checked');
prop()
方法获取属性值
有关详细信息,请访问以下链接。
答案 3 :(得分:0)
我的经验是attr()
始终有效。
var chk_summary = false;
var summary = $("#summary").attr('checked');
if ( summary === 'checked') {
chk_summary = true;
}
然后使用值chk_summary
答案 4 :(得分:0)
更改所有出现的
eventData
到
event
因为event对象有一个名为target
的属性。
当您离开目标元素时,您应该知道change
事件触发。因此,如果首先选中复选框,然后在输入文本中添加一些文字并对其应用模糊,则会生成true
。