Javascript 在onSubmit之前生成onClick事件

Javascript 在onSubmit之前生成onClick事件,javascript,html,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="

我想在表单提交之前执行
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>
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
,然后在提交前执行
,或者无论如何在
beforeimit
上插入
pergunta1
(N3_1或N3_2)的结果?

如果你想在表单提交前调用
beforeimit
,您实际上不需要
pergunta2
函数

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

在beforeSubmit中,您可以检索单击的元素的值,方法与在
pergunta2
中相同

然后,使用
document.getElementById(“myform2”).submit()
,您可以在提交之前的
函数末尾提交表单

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

函数pergunta1(元素){
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','beforesmit(this)');
$(“#Image2final”).attr('onclick','beforesmit(this)');
}
提交前的功能(元素){
var cartafinal2=element.getAttribute(“值”);
如果(cartafinal2=='N3_1'){
document.getElementById(“subjectfinal”).value=“Resultado do teste:1”;
}else if(cartafinal2=='N3_2'){
document.getElementById(“subjectfinal”).value=“Resultado do teste:2”;
}
//取消对以下行的注释以提交表单
//document.getElementById(“myform2”).submit();
}


你能解释一下你在pergunta1()函数中做了什么吗?你的pergunta2()在pergunta1中的用途是什么?我看到了用户单击的图像并保存了结果,然后我更改了图像的属性,这样当我再次单击它时,我可以保存另一个值,pergunta1()会将图像一次单击转换为pergunta2()
jQuery
在您的帖子或OP的标签中都没有提到。它很有效。非常感谢您,我已经被这个问题困扰了两天