在onSubmit之前进行onClick事件

时间:2018-06-25 08:16:55

标签: javascript html

我想在表单提交之前执行pergunta1函数。

HTML代码:

<form id="myform2" action="send_mail.php" method="post" onsubmit="beforeSubmit(this)">
   <input type="image" name="" id="Image1final"src="Imagens/R2.jpg" value="R1" border="0" onclick="pergunta1(this)" style="width:160px;height:160px;margin: 0 auto;display: none;" alt="" />
   <input type="image" name="" id="Image2final"src="Imagens/R8.jpg" value="R2" border="0" onclick="pergunta1(this)" style="width:160px;height:160px;margin: 0 auto;display: none;" alt="" />
</form>

JavaScript代码:

function pergunta1(element) {

    if (element.getAttribute("value") == "R1") {
        res1 = "N1_1"
    } else if (element.getAttribute("value") == "R2") {
        res1 = "N1_2"
    }
    document.getElementById('Image1final').src = 'Imagens/R1.jpg'
    document.getElementById('Image2final').src = 'Imagens/R2.jpg'
    $("#Image1final").attr('value', 'N3_1');
    $("#Image2final").attr('value', 'N3_2');
    $("#Image1final").attr('onclick', 'pergunta2(this)');
    $("#Image2final").attr('onclick', 'pergunta2(this)');

}

function pergunta2(element) {
    cartafinal2 = element.getAttribute("value")
}

function beforeSubmit(element) {

    if (cartafinal2 == 'N3_1') {
        document.getElementById("subjectfinal").value = "Resultado do teste : 1";
    } else if (cartafinal2 == 'N3_2') {
        document.getElementById("subjectfinal").value = "Resultado do teste : 2";
    }
}

有没有什么方法可以先执行pergunta2然后执行beforesubmit,或者将pergunta1(N3_1或N3_2)的结果插入beforesubmit上?

1 个答案:

答案 0 :(得分:1)

如果要执行的操作是在提交表单之前调用beforeSubmit,则实际上并不需要pergunta2函数。

您只需更改图像的onclick属性即可调用beforeSubmit

在beforeSubmit中,您可以检索被单击元素的值,就像在pergunta2中一样。

然后,使用document.getElementById("myform2").submit(),可以在beforeSubmit函数的末尾提交表单。

在下面的代码段中,我对表单的提交进行了注释,并添加了subjectfinal文本字段,以便您可以测试它是否符合您的要求。

function pergunta1(element) {

    if (element.getAttribute("value") == "R1") {
        res1 = "N1_1"
    } else if (element.getAttribute("value") == "R2") {
        res1 = "N1_2"
    }
    document.getElementById('Image1final').src = 'Imagens/R1.jpg'
    document.getElementById('Image2final').src = 'Imagens/R2.jpg'
    $("#Image1final").attr('value', 'N3_1');
    $("#Image2final").attr('value', 'N3_2');
    $("#Image1final").attr('onclick', 'beforeSubmit(this)');
    $("#Image2final").attr('onclick', 'beforeSubmit(this)');
}

function beforeSubmit(element) {
    var cartafinal2 = element.getAttribute("value");
    
    if (cartafinal2 == 'N3_1') {
        document.getElementById("subjectfinal").value = "Resultado do teste : 1";
    } else if (cartafinal2 == 'N3_2') {
        document.getElementById("subjectfinal").value = "Resultado do teste : 2";
    }
    
    // Uncomment the line below to submit the form
    // document.getElementById("myform2").submit();    
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myform2" method="post">
   <input type="button" name="" id="Image1final" value="R1" border="0" onclick="pergunta1(this)" style="width:160px;height:160px;margin: 0 auto;" alt="" />
   <input type="button" name="" id="Image2final" value="R2" border="0" onclick="pergunta1(this)" style="width:160px;height:160px;margin: 0 auto;" alt="" />
   <input type="text" id="subjectfinal" />
</form>