2009-11-25 2 views
0

jQuery 함수로 기존 자바 스크립트 함수를 변환하려고합니다. 이 기능은 http://javascript.internet.com/forms/zip-to-state.html 에서 제공되며 사용자가 입력 한 우편 번호를 상태로 변환하는 것을 목표로합니다. 필요한 모든 플러그인을 사용하여 jQuery 1.3.2를 사용하고 있지만 jQuery 구문에 익숙하지 않아서이 방법을 일반 Javascript 구문으로 변환하는 방법에 익숙하지 않습니다.jQuery 폼 zip 코드에서 상태 함수

setState를 기능은 두 개의 매개 변수, 우편 번호 요소 및 상태 요소를 가져 와서 그래서 나는 이런 식으로 뭔가 할 노력하고있어이 구문에 대한

$('$zip_code').change(function() { setState($(this), $('#state')); }); 

어떤 생각을? 감사합니다, 당신의 zip 필드 드롭입니다 다코타

function getState(zip) { 
    if ((parseInt(zipString.substr(zip/4, 1), 16) & Math.pow(2, zip % 4)) && (zip.length == 5)) 
     for (var i = 0; i < stateRange.length; i += 7) 
      if (zip <= 1 * stateRange.substr(i, 5)) 
       return stateRange.substr(i + 5, 2); 
    return null; 
} 

function setState(txtZip, optionBox) { 
    if (txtZip.value.length != 5 || isNaN(txtZip.value/4)) { 
     optionBox.options[0].selected = true; 
     alert("Please enter a 5 digit, numeric zip code."); 
     return; 
    } 

    var state = getState(txtZip.value); 

    for (var i = 0; i < optionBox.options.length; i++) 
     if (optionBox.options[i].value == state) 
      return optionBox.options[i].selected = true; 
    for (var i = 0; i < optionBox.options.length; i++) 
     if (optionBox.options[i].value == "XX") 
      return optionBox.options[i].selected = true; 
} 

답변

0

getState 및 setState 함수를 그대로 둘 수 있지만 사용 방법에 대한 질문을하기 전에 jQuery를 실제로 읽어야합니다. 구문을 모르더라도 구문을 사용하는 방법을 읽어 볼 수 있습니다. Aberon처럼

는 말했다 'ZIP_CODE가'에 해당하는이 상황과 변화 '#zip_code'에서 '$의 ZIP_CODE'에서 사용 블러 '의 ID로

<input type="text" id="zip_code" name="whatever_you_want" /> 

당신은 또한 선택 상자를 원하는 상태 '

<select id="state"> 
    ... options ... 
</select> 

불완전하기 때문에 Aberon의 솔루션은 여전히하지만, 일을 못해 ...

$('#zip_code').blur(function() { setState($(this)[0], $('#state')[0]); }); 

zip_code 입력 요소에서 값을 가져오고 val() 호출을 원합니다. 또한 id == 'state'인 선택 상자의 DOM 요소를 원하므로 $ ('# state')에 의해 반환 된 배열을 사용하는 대신 첫 번째 요소를 원하게됩니다.

시도해보십시오. 도움을 받으시기 바랍니다. 해당 스크립트에 포함

-Stephen

+0

고마워요, 스티븐. 내 배경은 PHP에 있지만 분명히 $는 #이어야합니다. 또한 #state 요소에 대한 DOM 배열의 첫 번째 요소를 호출하여 올바른 방향으로 나를 안내해 주셔서 감사합니다. 주변을 돌아본 후 원래 함수가 #zip_code 값을 매개 변수로 필요로하지 않고 전체 요소를 필요로한다는 것을 알았습니다. 적절한 함수 호출은 $ ('# zip_code')로 밝혀졌습니다. 철저한 답변에 많은 시간을드립니다. 최고, Dakota. – Dakota

+0

위대한, 내가 도울 수있어서 기뻐. 언급 한 내용을 변경하기 위해 내 게시물을 업데이트했습니다. 이러한 zip 및 state 함수를 작성한 사람이 사용법에 대한 의견을 추가하면 도움이 될 것입니다. 필자는 문자열을 매개 변수로 사용하고 DOM 요소가 아니라는 가정하에 신속하게 살펴 보았습니다. –

0

하지 않는 한 아래 당신은 아마 당신의 기능에 blur 또는 keyup를 사용하여 더 나을 것입니다.

$('#zip_code').blur(function() { setState($(this), $('#state')); }); 

는 또한 #zip_code$zip_code을 변경했습니다.

1

데이터 테이블은 사용되지 않는 오류로 가득합니다. 00601 PR 00801 VI 00901 PR 01001 MA 02,801 RI 03031 NH 03901 ME 05001 VT 에게

00501 NY : 여기에 표시된 (2010 년 5 월) 현재 ZIP 상태 휴식의 시작 부분에 이러한 비교 CT 06001 07001 09002 NJ AE NY 10001 15001 PA DE 19,701 20,001 20,101 DC VA 20201 DC 20588 20590 MD DC 012,351,20598 VA USPS에 매달 자신의 우편 데이터베이스를 업데이트

20599 DC 20,601 MD 22003 VA 24,701 WV .... 고정 데이터 소스에주의하십시오.이 데이터 소스는 작성 시점에서만 정확합니다. http://semaphorecorp.com은 현재 USPS 데이터의 저렴한 소스입니다.

+0

이것도 좋은 팁입니다! – Dakota