我有一个带有文本输入字段的表单。由于数据库操作很昂贵,我使用此方法来检查更改:
<input type=text name=myinput value="Current text">
<input type=hidden name=myinput_original value="Current text">
这样我可以将myinput与服务器上的myinput_original进行比较,并决定是否检查/更新数据库。
这当然是一些开销(基本上将从/向服务器发送的数据加倍)只是为了检查更改。
目前,数据发送4次(从服务器到客户端两次,从客户端到服务器两次)。我想将其减少到1-2倍(如果没有进行任何更改,数据只发送一次到客户端并且没有发回任何内容;如果发生更改,数据只发送一次到客户端,只返回一次到服务器)
我想用Javascript优化它,这样如果用户按原样保留文本,没有被传输到服务器(即字段&#34; myinput&#34;是从POST请求中删除)并且只有在文本发生变化时才传输文本(即正常的HTML行为)。这样服务器只会获得更改的值。
如何在Javascript中完成?
答案 0 :(得分:0)
您需要为focusout
(分别为blur
)附加事件侦听器,并将该值与原始输入数据进行比较。如果这两个值匹配,则没有任何更改。
document.getElementByName( 'myinput' ).addEventListener( 'focusout', function( event ) {
if( document.getElementByName( 'myinput_original' ).value !== this.value ) {
alert( 'new value differs' );
};
}, false);