我有以下输入字段,内联事件处理程序包含多个函数。我希望如果reqField()
返回false
,其余的功能将被取消,但这种情况不会发生。
所有发生的事情是reqField()
提前终止,如果输入字段有默认操作,则会被阻止。无论如何都要达到我所追求的结果(终止其余的功能)。
顺便说一句,我不能在returning false
之前将其从onclick中删除,因为它们需要保留在下一个onblur
事件中。
function getnDisplayTextInputBox(id) {
var s = document.getElementById(id);
s.setAttribute('onclick', '');
var obj = getDataAttribs2Obj(id);
var str = getParamStrFromDataObj(obj);
s.innerHTML = "<input type=\"text\" data-param=\""+obj['param']+"\" id=\"edit\" value=\""+htmlentities(s.innerHTML)+"\" onblur=\"return reqField(this); postData('"+obj['sendtourl']+"', '"+str+"&spanid="+id+"&newVal='+this.value, 'replaceTextTextInputFieldWithValue(resp);', '','');\">";
document.getElementById('edit').focus();
}
当用户点击原始文本时,上述函数会将span
中的文本替换为填充了相同文本的输入字段。然后,他们可以编辑文本,然后将其发送到服务器并保存onbur
。
某些范围具有属性data-param='required'
,如果是,则reqField()
将要求该字段不为空,如果是,则为return false
(在提醒用户之后)警报框的问题)。显然,我不想让内联的下一个函数触发,将空字段发送到服务器进行保存,或者后面的那个函数,将span
中的纯文本输入框交换出来。 / p>
答案 0 :(得分:1)
试试这个
function getnDisplayTextInputBox(id){
var s = document.getElementById(id);
s.setAttribute('onclick', '');
var obj = getDataAttribs2Obj(id);
var str = getParamStrFromDataObj(obj);
s.innerHTML = "<input type=\"text\" data-param=\""+obj['param']+"\" id=\"edit\" value=\""+htmlentities(s.innerHTML)+"\" onblur=\"if(this.value==''){return false;}else{return reqField(this); postData('"+obj['sendtourl']+"', '"+str+"&spanid="+id+"&newVal='+this.value, 'replaceTextTextInputFieldWithValue(resp);', '','');}\">";
document.getElementById('edit').focus();
}