2017-02-16 2 views
0

У меня проблема с моим кодом onsubmit. Я использую калькулятор от сторонней компании, и я пытаюсь запустить javascript при отправке формы. Предупреждение будет отключено, но если у меня установлен возврат к false, форма все еще отправляется.Javascript onSubmit не возвращает false

Вот строка кода, я работаю в моей собственной среде: document.getElementsByTagName("Form")[3].onsubmit = function() { alert('Test'); return false; };

я построил точную копию здесь: (За то, что когда-либо причине это привычка нагрузки во фрагменте, я скопировал тот же код на мой сервер, и он прекрасно работает, так вот это в действии. Page)

function myFunction() { 
 
    document.getElementsByTagName("Form")[0].onsubmit = function() { alert('Test'); return false; }; 
 
}
<button onclick="myFunction()">Wait for script to load then press this button to add the onsubmit, then you can press calculate</button> 
 
<script src="https://calculators.symmetry.com/widget/js/salary.js?key=RHA0Slc2ZjEydjNkR0Y2eTEvOUxpZz09"></script>

I ч не узнал, как сделать обнаружение onload для скрипта, но поэтому вам нужно дождаться загрузки сценария, а затем нажмите кнопку, чтобы вставить javascript.

Спасибо за любую помощь.

+0

Так как же загружается форма, которую вы не можете прикрепить без onclick? – epascarello

+0

@epascarello, сценарий, предоставляемый компанией, строит калькулятор. Итак, если у меня есть javascript, который запускается при загрузке страницы, он не найдет форму, потому что она еще не построена. Вот почему мне нужна загрузка для скрипта, который у меня еще нет. –

ответ

1

Ну .. в вашем решении вы добавление новый обработчик событий для формы на каждой кнопке мыши

Вместо того, чтобы объявить обработчик события загрузки страницы, а затем вызвать его

Это должно быть ....

<script> 
    function onMyPageLoaded() 
    { 
     document.getElementsByTagName("Form")[0].onsubmit = function (e) 
     { 
       e.preventDefault(); 

       // place your code here 

       return false; // cancel form submit 
     }; 
    } 

    function doSomething() // use this ONLY if you intend to by-pass the native submit mechanism 
    { 
     document.getElementsByTagName("Form")[0].submit(); // trigger the event here 
    } 
</script> 

<body onload="onMyPageLoaded()"> 
    <form> 
     <button type="submit">send</button> 
    </form> 
</body> 
+0

Я не уверен, что я просто использую ваш код неправильно, но в тесте, который я выполнил, используя ваш фрагмент, я все еще сталкиваюсь с проблемой, которую представляет форма, но теперь предупреждение не появляется. Цель состоит в том, чтобы форма не отправлялась, а отображала сообщение. На более позднем этапе больно вернуться и добавить модальное окно, которое появится вместо предупреждения. Спасибо за помощь. Btw –

+0

Хорошо, я заметил, что в конце вашего javascript есть дополнительный «}». После того, как я удалил его, код работал нормально, но он все равно отправляется, когда возвращается false. Вы решили проблему с загрузкой. Так что спасибо –

+0

@Rick Sibley - спасибо за отзыв Я только что отредактировал свой ответ :) – ymz

Смежные вопросы