检查复选框时,文本框值的jquery函数更改

时间:2015-07-05 19:46:27

标签: javascript jquery

我有一个文本区域,其中填充了正在检查的checkboxex的值。我希望在更改文本区域的内容时调用jquery函数。我尝试了以下功能,但仅当其内容通过键更改而不是由于复选框值映射时才起作用。

$(document).ready(function(){
        $('#message_sent_to').on('propertychange change keyup paste input',function() {
            alert("hello");
        var limit = $('#promo_limit').val();
        alert("<%= @p_limit %>");
    });

文字区域是

<%= f.text_area :sent_to, :class => 'form-control'%>

有两个复选框,一个用于映射所有复选框的值,另一个用于映射单个复选框值。

<%= check_box_tag "contact_no[]", staff.contact_no %>
<%= check_box_tag "contact_nos[]", @staff_members.map(&:contact_no).join(', ') %>

注意:复选框映射的代码太长,所以我不在此处发布。

2 个答案:

答案 0 :(得分:2)

你也可以通过检查文本框值使用javascript来做到这一点,即它会在一段时间内改变或不改变。

var $message_sent_to = $("#message_sent_to");
$message_sent_to.data("value", $message_sent_to.val());
setInterval(function() {
var data = $message_sent_to.data("value"),
val = $message_sent_to.val();
if (data !== val) {
    $message_sent_to.data("value", val);
    alert("changed");
}
},100);

答案 1 :(得分:0)

尝试使用.triggerHandler()

$(document).ready(function() {
  $("#message_sent_to").on("propertychange change keyup paste input", function() {
    alert("hello");
    // var limit = $('#promo_limit').val();
    alert("<%= @p_limit %>");
  });
  $("input").on("change", function(e) {
    $("#message_sent_to").val(function(_, val) {
      return val + e.target.value
    }).triggerHandler("input")
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="message_sent_to"></textarea>
<input type="checkbox" />
<input type="checkbox" />