1

テキスト フィールドの最大長に達したときに JavaScript 関数を自動的に呼び出すスクリプトを探しています。

ここで見つけたこのスクリプトを変更しようとしましたajax call after x characters

$("input#zipcode").live("keyup", function( event ){
    if(this.value.length == this.getAttribute('maxlength')) {
        if(!$(this).data('triggered')) {
            // set the 'triggered' data attribute to true
            $(this).data('triggered',true); 
            if ($(this).valid() == true ) { loadXMLDoc(); } 
        }
    } else { $(this).data('triggered',false); }
});

これは、loadXMLDoc 部分を含むコードの一部です。

function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4)
    {
    document.getElementById("state_insert").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","state_insert.asp?zipcode="+document.getElementById('zipcode').value,true);
xmlhttp.send();
}

maxlength に達したら、追加のパラメーターを渡す必要のない "LoadXMLDoc" 関数を呼び出すようにします。

現時点では、次のように onblur="LoadXMLDoc()" に設定しています。

[input name='zipcode' type='text' class="form_elements" id='zipcode' tabindex='11' autocomplete='off' onchange="this.value=extractNumeric(this.value)" onkeypress="return isNumericKey(event)" value='' size="4" maxlength="5" onblur="loadXMLDoc()" /]

< と > は許可されていないため、[ と ] を使用しました。

テキストフィールドのプロパティで、5桁の郵便番号が入力されるとすぐに読み込まれることを望みます.

前もって感謝します :)

Robert.
4

1 に答える 1

0

次のような onkeypress イベントで実行できます。

onkeypress="return isNumericKey(event,this)"

番号とともに、最大長もチェックする必要があります。コードは次のようになります。

function isNumericKey(evt,zip) {
  // your Number 
  // check here

  var zipLen=zip.getAttribute('maxlength');
  var zipValueLen=zip.value.length;
  if(zipValueLen>=zipLen) { LoadXMLDoc(); return false;}
}
于 2012-12-25T07:09:46.663 に答える