Javascript 如何制作';返回false';阻止内联onclick事件处理程序中连续函数的执行?

Javascript 如何制作';返回false';阻止内联onclick事件处理程序中连续函数的执行?,javascript,javascript-events,Javascript,Javascript Events,我有一个包含多个函数的内联事件处理程序的输入字段。我希望如果reqField()返回false其余的函数将被取消,但这并没有发生 所发生的一切是reqField()提前终止,如果输入字段有默认操作,则会阻止该操作。是否有任何方法可以达到我想要的结果(剩余函数的终止) 顺便说一下,我不能在返回false之前将它们从onclick中删除,因为它们需要在下一次onblur事件中保持不变 function getnDisplayTextInputBox(id) { var s = document

我有一个包含多个函数的内联事件处理程序的输入字段。我希望如果
reqField()
返回
false
其余的函数将被取消,但这并没有发生

所发生的一切是
reqField()
提前终止,如果输入字段有默认操作,则会阻止该操作。是否有任何方法可以达到我想要的结果(剩余函数的终止)

顺便说一下,我不能在返回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();

}
函数getnDisplayTextInputBox(id){ var s=document.getElementById(id); s、 setAttribute('onclick',''; var obj=getDataAttribs2Obj(id); var str=getParamStrFromDataObj(obj); s、 innerHTML=“”; document.getElementById('edit').focus(); } 当用户单击原始文本时,上述功能将
span
中的文本替换为填充有相同文本的输入字段。然后,他们可以编辑文本,并将其发送到服务器并保存到onbur

某些跨度具有属性
data param='required'
,如果是,则
reqField()
将要求该字段不为空,如果为空,则
将返回false
(在警告用户警报框出现问题后)。很明显,我不希望下一个函数触发,将空字段发送到服务器进行保存,或者是之后的函数,它在
span
中为纯文本替换输入框

函数getnDisplayTextInputBox(id){

var s=document.getElementById(id);
s、 setAttribute('onclick','';
var obj=getDataAttribs2Obj(id);
var str=getParamStrFromDataObj(obj);
s、 innerHTML=“”;
document.getElementById('edit').focus();

}

return
结束您的代码并“返回”到任何调用它的对象。我的建议是丢失内联事件,并使用事件处理程序。将函数的返回值存储在变量中。然后使用
if
查看是否应该结束或继续。@RocketHazmat那么您的意思是设置一个可由以下函数检查的全局变量?我想那可能行得通。我不是这么建议的。我说的是这样做:
function(){var go=func1();if(go){func2();}}
,但我想这也行得通。谢谢@RocketHazmat,我最后使用了一个全局变量,效果非常好。但是你激发了这个想法。非常感谢,谢谢。有趣的解决方案,我怀疑它会解决我的问题。我想我还是更喜欢我所做的(设置一个全局变量,并在下面的每个函数中检查它,以确定是否中止。)不过+1是一个可行的解决方案。
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();