2017-09-18 8 views
0

js 기능을 구현하는 데 문제가 있습니다. 내 기술은 제한되어 있습니다 ... 필드 이름을 사용하도록 강요당한 필드가 위젯이고 ID가 나열되지 않아 필드 ID에 대한 액세스 권한이 없습니다.변경 기능에 document.getElementsByTagName

고객이 webbform을 통해 익명 전자 메일로 보낼 수 있도록 전자 메일 주소 필드의 기본값이 있습니다.

<rn:widget path="input/FormInput" name="Contact.Emails.PRIMARY.Address" required="false" label_input="E-postadress" default_value="[email protected]" />

을 (이메일 답변을 할 수있는 방법이 없을 것 같은이)이 기본 이메일 주소가 변경되지 않을 때 일이 나는 텍스트를 보여 싶습니다 인 위 기본적으로 이메일을 만들면서 [email protected] 이벤트가 발생할 때 함수를 호출해야합니다. 제목 필드의 변경 사항을 확인하고 전자 메일 주소가 [email protected]과 같을 때 메시지를 표시 할 수 있다고 생각했습니다.

다음 코드는 내 문제를 해결할 수있을 것이라고 생각하지만 실제로는 그렇지 않습니다. 변경 이벤트를 등록합니다. 내가 뭘 잘못했는지에 대한 조언이 있니?

<rn:widget path="input/FormInput" name="Contact.Emails.PRIMARY.Address" required="false" label_input="E-postadress" default_value="[email protected]" /> 

<p id="Message"></p> 

<rn:widget path="input/FormInput" name="Incident.Subject" required="true" label_input="Subject" /> 

<script> 
document.getElementsByTagName('Incident.Subject')[0].onchange = function() { 

    var x = document.getElementsByName("Contact.Emails.PRIMARY.Address")[0].value; 

     if (x == '[email protected]') { 
      document.getElementById("Message").innerHTML = 'Some text...'; 
     } 
} 
</script> 

편집 : 나는 내가 HTML 렌더링 할 때의 소스 코드를 확인하자 생각이 아침에 밝은 생각을했다하고 내가 찾은 ID의이 그래서 나는이 다른 솔루션 지금이 의미 같아요 :-) ID를 사용하여.

<input type="email" id="rn_TextInput_4_Contact.Emails.PRIMARY.Address" name="Contact.Emails.PRIMARY.Address" class="rn_Email" maxlength='80' value='[email protected]' /> 

<input type="text" id="rn_TextInput_11_Incident.Subject" name="Incident.Subject" class="rn_Text" maxlength='240' required /> 
+0

위젯이 HTML로 렌더링되지 않습니까? – Mikey

+0

''요소가 있습니까? – epascarello

+0

안녕하세요, Mikey, 네, HTML에서'reder를 않습니다'var x = document.getElementsByName ("Contact.Emails.PRIMARY.Address") [0] .value;'나에게 이메일 주소를 알려 주셨을 것입니다. – user3624244

답변

-2

이벤트 리스너를 사용하십시오. 여기 데모

https://jsfiddle.net/aquadk/etmsqzLq/15/

<script> 
document.querySelector('input[name="Incident.Subject"]').onchange = function() { 
    var x = document.querySelector('input[name="Contact.Emails.PRIMARY.Address"]').value; 
     if (x == '[email protected]') { 
      document.getElementById("Message").innerHTML = 'Some text...'; 
     } 
} 
</script> 
+1

DOM에 언제 on()이 있습니까? – epascarello

0

내가 바로 :-) 그것을 얻을 수 있었다 (나에게 몇 시간이 걸렸다하지만 그것은 acomplished 가지고 좋은 느낌)

유사한 문제가있는 사용자는 아래 답변을 게시하고 있습니다.

Email: <input name="Contact.Emails.PRIMARY.Address" type="text" value="[email protected]"><br> 
<font color="red"><b><p id="Message"></p></b></font> 
Subject: <input id="rn_TextInput_11_Incident.Subject" name="subject" type="text" value=""><br> 
<br> 


<script> 
document.getElementById("rn_TextInput_11_Incident.Subject").onchange = function() {myFunction()}; 
</script> 

<script> 
function myFunction() { 
    var x = document.getElementsByName("Contact.Emails.PRIMARY.Address")[0].value; 
if (x == "[email protected]") { 
    document.getElementById("Message").innerHTML = "Glöm inte att fylla i din e-postadress om du önskar svar från oss."; 
} 

} 
</script> 
+0

아마도이 코드에 코드를 넣어야합니다. document.addEventListener ('DOMContentLoaded', function() { // ... }); bc. rn : 위젯을 먼저 렌더링해야합니다. –

+0

도움을 주셔서 감사합니다. 르네. 게시 한 스크립트를 시도하고 ** '일부 텍스트 ...'** ** ** **로 변경하여 이메일 주소를 알려 주지만 불행히도 아무 일도 없었습니다. 내일 두 번째 시도해 보겠습니다. (현지 시간은 22:03) :-) – user3624244

+0

안녕하세요, 작업 코드를 보여 드리기위한 링크를 추가했습니다. –

0

을 한

<script> 
var tag = document.getElementsByTagName('Incident.Subject')[0]; 
tag.on('change',function() { 
    var x = document.getElementsByName("Contact.Emails.PRIMARY.Address")[0].value; 

    if (x == '[email protected]') { 
     document.getElementById("Message").innerHTML = 'Some text...'; 
    } 
}); 
</script>