HTML / Javascript:仅在更改时发送字段

时间:2015-01-26 10:22:32

标签: javascript html-form-post

我有一个带有文本输入字段的表单。由于数据库操作很昂贵,我使用此方法来检查更改:

<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中完成?

1 个答案:

答案 0 :(得分:0)

您需要为focusout(分别为blur)附加事件侦听器,并将该值与原始输入数据进行比较。如果这两个值匹配,则没有任何更改。

document.getElementByName( 'myinput' ).addEventListener( 'focusout', function( event ) {
    if( document.getElementByName( 'myinput_original' ).value !== this.value ) {
        alert( 'new value differs' );
    };
}, false);

演示http://jsfiddle.net/faphygty/