我有一个包含多个字段的表单,以及一些jquery模式对话框(弹出窗口)。
如果用户更改了某个字段的值,我需要关闭所有打开的弹出窗口。
我尝试了但是它似乎没有工作(angular.module("md", [])
.controller("crt", function ($scope) {
$scope.txt = "text";
})
$(document).ready(function () {
$("#btnJq").click(function () {
var scope = angular.element($("#txtbox")).scope();
scope.txt = 'Changed';
scope.$apply();
})
})
事件没有触发,我没有在控制台中得到“测试”:
change
知道如何解决这个问题吗?
答案 0 :(得分:2)
还有很多事情要做,但你是否意识到change
只会触发场模糊?键入时不会触发。
此外,当您绑定处理程序时,元素可能不在那里。这可能是因为页面尚未加载或某些元素是异步加载的。之后动态添加的元素也不起作用。
要修复前者,请在尝试绑定事件处理程序之前确保页面已准备好
$(function() {
// safe here
});
或者,您可以在父代上绑定处理程序
$("#parent").on("change", "input[type='text']", function () {
console.log("test");
});
无论何时将元素添加到父元素,这都将起作用。请注意,这样做会较慢,因此请避免在body
或window
答案 1 :(得分:1)
使用autoOpen false
时有效$("#dialog-1").dialog({
autoOpen: false, // autoOpen to false
});
脚本:
$(function () {
$("#dialog-1").dialog({
autoOpen: false, // autoOpen to false
});
$("#dialog-2").dialog({
autoOpen: false,
});
$("#opener").click(function () {
$("#dialog-1").dialog("open");
});
$("#opener2").click(function () {
$("#dialog-2").dialog("open");
});
$("input[type='text']").change(function () { // input changes
console.log("test");
$(".ui-dialog-content").dialog("close");
});
});
HTML:
<div id="dialog-1" title="Dialog Title goes here...">This my first jQuery UI Dialog1!</div>
<div id="dialog-2" title="Dialog Title goes here...">This my first jQuery UI Dialog2!</div>
<button id="opener">Open Dialog</button>
<button id="opener2">Open Dialog</button>
<input type="text" id="txt" value="" />
答案 2 :(得分:0)
这只是一个随机的猜测,但你试过了吗?
$("input[type='text']”).on('change', function () {
console.log("test");
$(".ui-dialog-content").dialog("close");
});
我知道你的解决方案是一个快捷方式,它应该可行,但我已经看到一些元素可以用来代替快捷方式。它与在何时加载脚本时创建元素有关。