更改输入框还需要在JS

时间:2016-01-29 11:08:24

标签: javascript jquery html

我有输入框以及表<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。

如何解决这个问题?

5 个答案:

答案 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()方法获取属性值

有关详细信息,请访问以下链接。

https://stackoverflow.com/a/6170016/2240375

答案 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