Javascript live(';单击';),当页面加载时函数(事件)仅工作一次
我正在使用jquery对话框,其中我放置了2个文本框和1个按钮。这很好,所有内容都会呈现。在对话框中的按钮上,如果文本框为空,我会在文本框上应用验证。因此,当页面呈现时,验证第一次可以正常工作,但之后在另一个对话框上不会工作。 看看我的两个函数。 第一个用于对话框,第二个用于更新对话框中的文本框Javascript live(';单击';),当页面加载时函数(事件)仅工作一次,javascript,jquery,events,Javascript,Jquery,Events,我正在使用jquery对话框,其中我放置了2个文本框和1个按钮。这很好,所有内容都会呈现。在对话框中的按钮上,如果文本框为空,我会在文本框上应用验证。因此,当页面呈现时,验证第一次可以正常工作,但之后在另一个对话框上不会工作。 看看我的两个函数。 第一个用于对话框,第二个用于更新对话框中的文本框 $('.update_service_name').live('click',function(event){ var $tr = $(this).closest('tr'); var
$('.update_service_name').live('click',function(event){
var $tr = $(this).closest('tr');
var old_value = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
var new_value_textbox ="<div class='learfix' id='div_new_value'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
var update_button ="<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>" ;
var $dialog = $('<div>',{title:'Update Service Name'}).dialog({
autoOpen: false,
width: 250
});
$('<p>').html(old_value_textbox).appendTo($dialog);
$('<p>').html(new_value_textbox).appendTo($dialog);
$('<p>').html(update_button).appendTo($dialog);
$dialog.dialog('open');
return false;
});
$('.update_service_name_btn').live('click',function(event){
var pass = true;
var new_service_name = $("#new_service_name").val();
$("#error_message_div_new_value").html(' ');
if(!new_service_name){
$("#error_message_div_new_value").html('New Serrvice Name Please!');
pass = false;
return false;
}
});
已更新
$('.update_service_name').live('click',function(event){
var $tr = $(this).closest('tr');
var old_value = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
var new_value_textbox ="<div class='learfix' id='div_new_value'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$update_button.find('.update_service_name_btn').live('click',function(event){
var pass = true;
var new_service_name = $("#new_service_name").val();
$("#error_message_div_new_value").html(' ');
if(!new_service_name){
$("#error_message_div_new_value").html('New Serrvice Name Please!');
pass = false;
return false;
}
});
var $dialog = $('<div>',{title:'Update Service Name'}).dialog({
autoOpen: false,
width: 250
});
$('<p>').html(old_value_textbox).appendTo($dialog);
$('<p>').html(new_value_textbox).appendTo($dialog);
$('<p>').append($update_button).appendTo($dialog);
$dialog.dialog('open');
return false;
});
请注意
我刚刚发现整个问题都出在我的动态创建文本框中。我提醒了文本框的值,在第一次单击它时提醒正确的值,然后在每次提醒后,我的意思是在“新建”对话框中,我会得到我第一次输入的旧文本框值。有人能帮我解决这个问题吗??Yo每次重新创建对话框时,您都必须运行验证代码。现在事件只注册一次,下次打开对话框时,将创建一个新的
更新\u服务\u名称\u btn
,但您不会再次注册事件!例如:
...
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$update_button.find('.update_service_name_btn').live('click',function(event){
var pass = true;
var new_service_name = $("#new_service_name").val();
$("#error_message_div_new_value").html(' ');
if(!new_service_name){
$("#error_message_div_new_value").html('New Serrvice Name Please!');
pass = false;
return false;
}
});
var $dialog = ...
...
$('<p>').append($update_button).appendTo($dialog);
...
。。。
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});
var$dialog=。。。
...
$(“”).append($update_按钮)。appendTo($dialog);
...
完整代码:
$('.update_service_name').live('click',函数(事件){
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});
var$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});
每次重新创建对话框时,您都必须运行验证代码。现在事件只注册一次,下次打开对话框时,将创建一个新的更新服务\u名称\u btn
,但您不会再次注册该事件!例如:
...
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$update_button.find('.update_service_name_btn').live('click',function(event){
var pass = true;
var new_service_name = $("#new_service_name").val();
$("#error_message_div_new_value").html(' ');
if(!new_service_name){
$("#error_message_div_new_value").html('New Serrvice Name Please!');
pass = false;
return false;
}
});
var $dialog = ...
...
$('<p>').append($update_button).appendTo($dialog);
...
。。。
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});
var$dialog=。。。
...
$(“”).append($update_按钮)。appendTo($dialog);
...
完整代码:
$('.update_service_name').live('click',函数(事件){
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$update_按钮。查找('.update_服务\u名称\u btn')。实时('click',函数(事件){
var pass=真;
var new_service_name=$(“#new_service_name”).val();
$(“#错误信息_div_新值”).html(“”);
如果(!新建服务名称){
$(“#error#message_div_new_value”).html('new serservice Name Please!');
通过=错误;
返回false;
}
});
var$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});
就这样做吧&我相信你的问题会解决的
var $dialog=null;
$('.update_service_name').live('click',function(event){
if($dialog!=null){
$dialog.remove();
}
var $tr = $(this).closest('tr');
var old_value = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
var new_value_textbox ="<div class='clearfix'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$dialog = $('<div>',{title:'Update Service Name'}).dialog({
autoOpen: false,
width: 250
});
$('<p>').html(old_value_textbox).appendTo($dialog);
$('<p>').html(new_value_textbox).appendTo($dialog);
$('<p>').append($update_button).appendTo($dialog);
$dialog.dialog('open');
return false;
});
var$dialog=null;
$('.update_service_name').live('click',函数(事件){
如果($dialog!=null){
$dialog.remove();
}
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});
就这样做吧&我相信你的问题会解决的
var $dialog=null;
$('.update_service_name').live('click',function(event){
if($dialog!=null){
$dialog.remove();
}
var $tr = $(this).closest('tr');
var old_value = $tr.children('td:eq(1)').text(),
phone_service_id = $tr.children('td:eq(2)').text();
var old_value_textbox = "<div class='learfix'><label>Current Service Name</label><div class='input'><input class='large' type='text' value='"+old_value+"' disabled='disabled'/></div></div>" ;
var new_value_textbox ="<div class='clearfix'><label>New Service Name</label><div class='input'><input class='large' type='text' value='' id='new_service_name' /><span class='help' id='error_message_div_new_value'></span></div></div>";
var $update_button = $("<span><span class='update_service_name_btn'><a href='#' class='small blue button'><span>Update</span></a></span> <img src='"+ temp_images_path +"/small_loader.gif' id='small_loader' style='display:none;float:right;margin: 3px 150px 0 0;' /></span>");
$dialog = $('<div>',{title:'Update Service Name'}).dialog({
autoOpen: false,
width: 250
});
$('<p>').html(old_value_textbox).appendTo($dialog);
$('<p>').html(new_value_textbox).appendTo($dialog);
$('<p>').append($update_button).appendTo($dialog);
$dialog.dialog('open');
return false;
});
var$dialog=null;
$('.update_service_name').live('click',函数(事件){
如果($dialog!=null){
$dialog.remove();
}
var$tr=$(this.closest('tr');
var old_value=$tr.children('td:eq(1)')。text(),
电话服务id=$tr.children('td:eq(2)').text();
var old_value_textbox=“当前服务名称”;
var new_value_textbox=“新服务名称”;
var$update_按钮=$(“”);
$dialog=$('',{title:'updateservicename'})。dialog({
自动打开:错误,
宽度:250
});
$(“”).html(旧值文本框).appendTo($dialog);
$(“”).html(新值文本框).appendTo($dialog);
$(“”).append($update_按钮)。appendTo($dialog);
$dialog.dialog('open');
返回false;
});
控制台是否抛出任何错误?什么