0

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

所发生的一切reqField()都是提前终止,如果输入字段有默认操作,它将被阻止。反正有没有达到我想要的结果(终止剩余的功能)。

顺便说一句,我不能只将它们从 onclick 中删除,因为它们需要在下一个事件returning false中保持原位。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();

}

当用户单击原始文本时,上述函数将 a 中的文本替换为span填充了相同文本的输入字段。然后他们可以编辑发送到服务器并保存的文本onbur

一些跨度有一个属性data-param='required',如果是这样,reqField()则要求该字段不为空,return false如果是则将要求该字段(在使用警报框提醒用户问题之后)。显然,我不希望下一个内联函数触发,将空字段发送到服务器进行保存,或者之后的一个,它将输入框换成span.

4

1 回答 1

1

尝试这个

函数 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();

}

于 2013-04-09T09:27:59.880 回答