2012-07-19 3 views
0

저는 자바 스크립트에 익숙하지 않으며 입력 유형에 따라 다른 이벤트가 발생하도록 노력하고 있습니다. 나는 내 HTML 헤더에 다음과 같은 한 :자바 스크립트로 리디렉션하려고합니다.

<select name="destination"> 
<option value="current_builds">Current Builds</option> 
<option value="deprecated">Deprecated Files</option> 
<option value="mailing_list">Mailing List</option> 
</select><br/> 
<input type="button" value="next >" onClick="validateForm()" /> 

이 있지만하지 않는 것을 :

<script type="text/javascript"> 
    function validateForm(){ 
    var val=document.getElementsByName("destination"); 
    if (val == "deprecated"){ 
     window.location="http://website.com/"; 
    } 
    } 
</script> 

그런 다음 몸에, 나는 다음과 같은 수 있습니다. 그것은 단지 같은 페이지에 머물러 있습니다.

<form name="my_form" onSubmit="validateForm()"> 
... 
</form> 

를 다음 일치 자바 스크립트를 갖는 : 나는 또한 말하여 양식 태그 내부에 그것을 포장 시도

var val = document.forms["my_form"]["destination"].value 

을하지만이 중 하나가 작동하지 않았다.

누구든지 문제가 무엇인지 확인하십시오. 감사합니다. .

답변

4

로 평가되면 당신의 ifalert(val)보고 유타 :

function validateForm(){ 
    var val=document.getElementsByName("destination"); 
    var theSelectedOption = val[0].options[val[0].selectedIndex].value; 
    if (theSelectedOption == "deprecated"){ 
     window.location="http://website.com/"; 
    } 
    } 
+0

미래에 대해 알고 싶다면 조금 설명해 주시겠습니까? val [1] 또는 무엇인가와 비교하여 val [0]을 선택하는 것을 어떻게 아시나요? val [1]이 선택 될 때가있을 것인가? 그리고 이것이 일어날 수있는 예를 나에게 줄 수 있겠는가? 또한 .selectedIndex 부분이 필요한 이유는 무엇입니까? – de1337ed

+0

'getElementsByName ("destination")'메소드는 "destination"과 같은 이름을 가진 모든 엘리먼트에 접근한다. 발견 된 모든 엘리먼트의 배열을 리턴한다. 여기서 val [0]은 첫 번째 요소이며, val [1]은 html에있는 두 번째 요소 (있는 경우)입니다 ... selectedIndex는 드롭 다운 목록에서 선택한 옵션의 인덱스를 설정하거나 반환합니다. http://www.w3schools.com/jsref/dom_obj_select.asp 및 http://www.w3schools.com/jsref/met_doc_getelementsbyname.asp – mabbas

+0

의 이름은 'getElementsByName'이며,'Elements '는 복수형 의미입니다. 그 이름을 가진 둘 이상의 요소가 될 수 있으므로 배열 형식의 콜렉션이 리턴됩니다. 반면에 'getElementById'는 단수입니다. 하나의 요소가 반환 될 것으로 예상됩니다. – codingbiz

0

선택한 옵션에서 값을 가져와야합니다. 좋아요 :

var index = document.getElementsByName("destination").selectedIndex; 
var val=document.getElementsByName("destination").options[index].value; 

그러면 선택한 옵션의 값이 검색됩니다.

3

선택한 요소에서 값을 가져와야합니다.

window.location.href = 'URL'; 
+0

와우 효과가 있습니다. 그러나 나는 왜 그런지 이해하지 못한다. 왜 배열로 제출됩니까? 해당 배열에 요소가 두 개 이상 있습니까? – de1337ed

+0

아니요 하나의 요소, 0 요소가 없습니다. 그리고 예, 배열의 경우 –

+0

글쎄, 잠시 생각해보십시오. getElementsByName을 호출하고 있습니다. 멀티플처럼 Element_S_입니다. Javascript는 주어진 이름의 모든 요소를 ​​반환하므로 배열로 반환합니다. 그것이 단지 하나의 요소 일지라도. – Hacknightly

0

를 사용하려고하면 사용하고자하는

val=document.getElementsById("destination").value; 

p 지금까지 내가 당신의 기능을 수정하고 테스트 진정한

+0

그건 중요하지 않습니다. – Lion

0

을 다음

<select name="destination" id="destination"> 

자바 스크립트를 수행 document.getElementsByName가 배열을 반환하기 때문에, 당신은 href 속성이 누락이

var val = ​document.getElementsByName("destination")​​​​​[0].value 
0

대신 이름 아이디의 그것을 시도에 id는 고유 한 요소입니다. 자바 스크립트는

var destination = document.getElementById("destination"); 
if (destination.options[destination.selectedIndex].value == "deprecated"){ 
    window.location="http://website.com/"; 
} 

HTML

<select id="destination"> 
    <option value="current_builds">Current Builds</option> 
    <option value="deprecated">Deprecated Files</option> 
    <option value="mailing_list">Mailing List</option> 
</select> 
<br /> 
<input type="button" value="next &gt;" onclick="javascript:validateForm();" /> 
0

jQuery를

Redirect using drop down

<form name="my_form"> 
    <select id="destination"> 
    <option value="current_builds">Current Builds</option> 
    <option value="deprecated">Deprecated Files</option> 
    <option value="mailing_list">Mailing List</option> 
    </select><br/> 
    <input type="button" value="next >" id="submit"> 
</form> 

012의 조금에 이것을 시도 지원
$('#submit').click(
    function validateForm(){ 
    var e = document.getElementById("destination"); 
    var val = e.options[e.selectedIndex].value; 

    if (val == "deprecated"){ 
    window.location="http://website.com/"; 
    } 
});