检测按钮单击时值更改的文本框值的变化
Detect change in textbox value whose value changes on button click
我有以下一段代码:
$(".select").click(function(){
$("input").val($(this).text()).change();
});
$("input").change(function(){
alert($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<button class="select">1</button>
<button class="select">2</button>
<button class="select">3</button>
<button class="select">4</button>
在这里,当我通过单击<button>
选择相同的值时,.change()
函数无论如何都会被触发,这使得它与任何其他函数没有什么不同,即破坏了仅在值变化时触发的专用化。
SO上也存在类似的问题,但它没有给出这个问题的任何答案。
如何解决这个问题?
这就是
不传递处理程序.change()
方法触发change
事件的作用。应比较这些值并有条件地触发事件。
以编程方式更改输入的值时,不会触发 change
事件。因此,当您手动触发事件(通过使用 change
方法)时,您应该在触发事件之前自己检查值。
添加if语句,它将根据您的需要工作
$(".select").click(function(){
if($("input").val() != $(this).text())
$("input").val($(this).text()).change();
});
$("input").change(function(){
alert($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<button class="select">1</button>
<button class="select">2</button>
<button class="select">3</button>
<button class="select">4</button>
相关文章:
- 当文本不断变化时,如何避免在按钮内移动文本
- 防止文本区域的大小发生变化
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何通过道场检测文本区域的变化
- 提交表单后,文本框中的日期会发生变化
- 检测按钮单击时值更改的文本框值的变化
- Javascript 不会检查文本输入值是否随组合网格而变化
- JavaScript 文本随时间来回变化(例如:1,2,3,2,1,2,3,2,1,2,3..)
- JavaScript:当用户用鼠标选择文本时,观察文本选择长度的变化
- 如何在网站上制作动画,每秒钟就会有一段文本发生变化
- 与图像幻灯片放映相对应的文本颜色变化
- 使用angularjs ng表根据特定条件使文本的颜色发生变化
- 立即检测输入[类型=“文本”]的变化
- 根据动态变化的变量(KineticJS)更改文本或颜色
- 如何在另一个文本框的值发生变化时更新文本框的值
- 如何在两个不断变化的字符串之间选择中间文本
- 文本区域-当用户编辑文本区域的内容时,文本颜色会发生变化
- 如何重载下拉下拉每个单选按钮上的变化和日期文本框的变化
- 突变观察者不检测文本变化
- jQuery文本变化顺利