模糊上的Javascript绑定,都是';如果索引为';和';其他';表演
HTML模糊上的Javascript绑定,都是';如果索引为';和';其他';表演,javascript,jquery,if-statement,indexof,onblur,Javascript,Jquery,If Statement,Indexof,Onblur,HTML <!-- Contents of div #1 --> <form id="6hgj3y537y2biacb"> <label for="product_calendar" class="entry_label">Calendar</label> <input type="text" name="product_calendar" class="entry" value="" /> </form>
<!-- Contents of div #1 -->
<form id="6hgj3y537y2biacb">
<label for="product_calendar" class="entry_label">Calendar</label>
<input type="text" name="product_calendar" class="entry" value="" />
</form>
<form id="pyc2w1fs47mbojez">
<label for="product_calendar" class="entry_label">Calendar</label>
<input type="text" name="product_calendar" class="entry" value="" />
</form>
<form id="kcmyeng53wvv29pa">
<label for="product_calendar" class="entry_label">Calendar</label>
<input type="text" name="product_calendar" class="entry" value="" />
</form>
<!-- Contents of div #2 -->
<div id="calendar_addRemove"> <!-- CSS >> display: none; -->
<div id="calendar_add">
<label for="calendar_add" class="calendar_addLabel">Add Occurrence</label>
<input type="text" name="calendar_add" class="calendar_addInput" value=""/>
</div>
<div id="calendar_remove">
<label for="calendar_remove" class="calendar_removeLabel">Remove Occurrence</label>
<input type="text" name="calendar_remove" class="calendar_removeInput" value=""/>
</div>
</div>
历法
历法
历法
添加事件
删除事件
Javascript
// Complete behavioral script
$(function() {
$('input[name=product_calendar]').css({ 'color': '#5fd27d', 'cursor': 'pointer' }).attr({ 'readonly': 'readonly' }); // Additional formatting for specified fields
$('input[name=product_calendar]').focus(function() { // Focus on any 'input[name=product_calendar]' executes function
var product_calendar = $(this); // Explicit declaration
var attr_val = $(product_calendar).attr('value');
$('#calendar_addRemove input').attr({ 'value': '' }); // Clear input fields
$('#calendar_addRemove').fadeIn(500, function() { // Display input fields
$('input[name=calendar_add]').blur(function() { // After value entered, action occurs on blur
alert('Blur'); // Added for testing
var add_val = $('input[name=calendar_add]').attr('value');
if (add_val != '') {
alert('Not Blank'); // Added for testing
var newAdd_val = attr_val + ' ' + add_val;
$(product_calendar).attr({ 'value': newAdd_val });
$('#calendar_addRemove').fadeOut(500);
}
else {
alert('Blank'); // Added for testing
$('#calendar_addRemove').fadeOut(500);
}
});
$('input[name=calendar_remove]').blur(function() { // After value entered, action occurs on blur
alert('Blur'); // Added for testing
var remove_val = $(this).attr('value');
if (remove_val != '') {
alert('Not Blank'); // Added for testing
if (attr_val.indexOf(remove_val) != -1) {
alert('Eval True'); // Added for testing
var newRemove_val = attr_val.replace(remove_val, '');
$(product_calendar).attr({ 'value': newRemove_val });
$('#calendar_addRemove').fadeOut(500);
}
else {
alert('Eval False'); // Added for testing
$('#calendar_remove').append('<p class="error">Occurrence Not Found</p>');
$('.error').fadeOut(1500, function() { $(this).remove(); });
}
}
else {
alert('Blank'); // Added for testing
$('#calendar_addRemove').fadeOut(500);
}
});
});
});
});
//完整的行为脚本
$(函数(){
$('input[name=product_calendar]').css({'color':'5fd27d','cursor':'pointer'}).attr({'readonly':'readonly'});//指定字段的其他格式
$('input[name=product\u calendar]')。focus(函数(){//focus on any'input[name=product\u calendar]'执行函数
var product_calendar=$(this);//显式声明
var attr_val=$(产品日历).attr('value');
$(#calendar_addRemove input').attr({'value':''})//清除输入字段
$('#calendar_addRemove').fadeIn(500,function(){//显示输入字段
$('input[name=calendar\u add]')。模糊(函数(){//输入值后,对模糊执行操作
警报('Blur');//添加用于测试
var add_val=$('input[name=calendar_add]')。attr('value');
如果(添加值!=''){
警报('notblank');//为测试添加
var newAdd_val=attr_val+“”+add_val;
$(产品日历).attr({'value':newAdd\u val});
$('日历添加删除').fadeOut(500);
}
否则{
警报('Blank');//为测试添加
$('日历添加删除').fadeOut(500);
}
});
$('input[name=calendar_remove]')。模糊(函数(){//输入值后,对模糊执行操作
警报('Blur');//添加用于测试
var remove_val=$(this.attr('value');
如果(删除值!=''){
警报('notblank');//为测试添加
如果(属性值索引)(删除值)!=-1){
警报('Eval True');//为测试添加
var newRemove_val=attr_val.replace(remove_val.);
$(产品日历).attr({'value':newRemove\u val});
$('日历添加删除').fadeOut(500);
}
否则{
警报('Eval False');//为测试添加
$(“#calendar_remove”)。追加(“未找到出现的事件”
”;
$('.error').fadeOut(1500,函数(){$(this.remove();});
}
}
否则{
警报('Blank');//为测试添加
$('日历添加删除').fadeOut(500);
}
});
});
});
});
我添加了一些警报以查看此脚本的执行顺序。当我在input[name=calendar\u add]
中输入1234
并模糊时,警报会按预期出现。然后,当我继续并在input[name=calendar\u remove]
中输入1234
和blur时,该脚本按以下顺序发出警报:blur、Not Blank、Eval False、blur、Not Blank、Eval True-如果我重复此过程,我的警报每次都会加倍(添加和删除),但顺序不变(好像是成套的)
我认为问题是在DOM中重新声明变量
attr\u val
,但我不太确定如何修改脚本来缓解这个问题。没有。这是不可能的
因此,有一些可能的原因看起来是这样的:
- 实际运行的代码与此不同。它可能是缓存的旧版本,或者您正在查找错误的文件
- 代码运行不止一次,这样两个执行分支都可以运行
- 您误解了结果,并且无论您看到什么导致必须执行两个分支的结论,实际上都是由其他代码引起的
.blur(function(e){
。然后可以使用e.currentTarget获取触发事件的元素,并显示它的一些属性(如它的id)来标识它
编辑2:
我对这一行很好奇:
$(product_calendar).attr({ value: newRemove_val });
您是在某处创建变量product\u calendar
,还是指:
$('input[name=product_calendar}').attr({ value: newRemove_val });
编辑3:
看到完整的代码,双重执行的原因很清楚。您甚至在事件处理程序中添加了处理程序,这意味着每次都会添加另一个处理程序
attr\u val
无法正常工作的原因是,它在一个函数中作为局部变量创建,然后在另一个函数中不可见
改为从开始添加模糊处理程序,它们只出现一次。在函数外部声明变量
一些注意事项:
- 您可以使用
函数,而不是使用val
函数访问attr
属性value
- 当您将
分配给$(this)
时,它是一个jQuery对象。您不必使用product\u calendar
$(product\u calendar)
- 删除操作与完整值不匹配,因此您可以添加
和12
,然后删除2
,得到2
和1
2
// Complete behavioral script $(function() { // declare variables in outer scope var attr_val; var product_calendar; $('input[name=product_calendar]') .css({ 'color': '#5fd27d', 'cursor': 'pointer' }) .attr('readonly', 'readonly') // Additional formatting for specified fields .focus(function() { // Focus on any 'input[name=product_calendar]' executes function product_calendar = $(this); // Explicit declaration attr_val = product_calendar.val(); $('#calendar_addRemove input').val(''); // Clear input fields $('#calendar_addRemove').fadeIn(500); // Display input fields }); $('input[name=calendar_add]').blur(function() { // After value entered, action occurs on blur var add_val = $(this).val(); if (add_val != '') { product_calendar.val(attr_val + ' ' + add_val); } $('#calendar_addRemove').fadeOut(500); }); $('input[name=calendar_remove]').blur(function() { // After value entered, action occurs on blur var remove_val = $(this).val(); if (remove_val != '') { if (attr_val.indexOf(remove_val) != -1) { product_calendar.val(attr_val.replace(remove_val, '')); $('#calendar_addRemove').fadeOut(500); } else { $('#calendar_remove').append('<p class="error">Occurrence Not Found</p>'); $('.error').fadeOut(1500, function() { $(this).remove(); }); } } else { $('#calendar_addRemove').fadeOut(500); } }); });
$(function() { var product_calendar = null; $('input[name=product_calendar]').css({ 'color': '#5fd27d', 'cursor': 'pointer' }).attr({ 'readonly': 'readonly' }); // Additional formatting for specified fields $('input[name=calendar_add]').blur(function() { // After value entered, action occurs on blur alert('Blur'); // Added for testing var add_val = $('input[name=calendar_add]').attr('value'); if (add_val != '') { alert('Not Blank'); // Added for testing var attr_val = $(product_calendar).attr('value'); var newAdd_val = attr_val + ' ' + add_val; $(product_calendar).attr({ 'value': newAdd_val }); $('#calendar_addRemove').fadeOut(500); } else { alert('Blank'); // Added for testing $('#calendar_addRemove').fadeOut(500); } }); $('input[name=calendar_remove]').blur(function() { // After value entered, action occurs on blur alert('Blur'); // Added for testing var remove_val = $(this).attr('value'); if (remove_val != '') { alert('Not Blank'); // Added for testing var attr_val = $(product_calendar).attr('value'); if (attr_val.indexOf(remove_val) != -1) { alert('Eval True'); // Added for testing var newRemove_val = attr_val.replace(remove_val, ''); $(product_calendar).attr({ 'value': newRemove_val }); $('#calendar_addRemove').fadeOut(500); } else { alert('Eval False'); // Added for testing $('#calendar_remove').after('<p class="error">Occurrence Not Found</p>'); $('.error').fadeOut(1500, function() { $(this).remove(); }); } } else { alert('Blank'); // Added for testing $('#calendar_addRemove').fadeOut(500); } }); $('input[name=product_calendar]').focus(function() { // Focus on any 'input[name=product_calendar]' executes function product_calendar = $(this); $('#calendar_addRemove input').attr({ 'value': '' }); // Clear input fields $('#calendar_addRemove').fadeIn(500); }); });