如何让“返回假”'阻止在内联onclick事件处理程序中执行连续函数?

时间:2013-04-08 17:46:16

标签: javascript javascript-events

我有以下输入字段,内联事件处理程序包含多个函数。我希望如果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>

1 个答案:

答案 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();

}