<html>
<head>
<script>
window.attachEvent("onload",createJlMenu);
function createJlMenu()
{
createCtl();
for(var i=0;i<document.forms.length;i++)
{
var e=document.forms[i].elements;
for(var j=0;j<e.length;j++)
{
if(e[j].jlvalue!=undefined)
{
e[j].attachEvent("onchange",new Function("fromSubmit('"+e[j].name+"','"+e[j].jlvalue+"')"));
}
}
}
}
function fromSubmit(name,jlvalue)
{
var value=document.getElementById(name).value;
var para=jlvalue.split(",");
var count=para.length/5;
for(var k=0;k<count;k++)
{
var num=k*5;
document.getElementById('prog_id').value=para[num];
document.getElementById('f_text').value=para[num+1]+" as text";
document.getElementById('f_value').value=para[num+2]+" as value";
document.getElementById('dept_where').value= para[num+3].replace("$value",value);
document.getElementById('link_input_name').value=para[num+4];
var dForm=document.getElementById('dForm');
dForm.submit();
}}
function createCtl()
{
var body = document.body;
var form=document.getElementById("dForm");
if(form==null)
{
form = document.createElement("<form name=\"dForm\" id=\"dForm\" target=\"if_name\" action=\"test.jsp\" method=\"post\">");
var in1=document.createElement("<input type=\"hidden\" name=\"prog_id\" id=\"prog_id\">");
var in2=document.createElement("<input type=\"hidden\" name=\"f_text\" id=\"f_text\">");
var in3=document.createElement("<input type=\"hidden\" name=\"f_value\" id=\"f_value\">");
var in4=document.createElement("<input type=\"hidden\" name=\"dept_where\" id=\"dept_where\">");
var in5=document.createElement("<input type=\"hidden\" name=\"link_input_name\" id=\"link_input_name\">");
var frm = document.createElement("<iframe id=\"if_name\" name=\"if_name\" style=\"display:none\"></iframe>");
form.appendChild(in1);
form.appendChild(in2);
form.appendChild(in3);
form.appendChild(in4);
form.appendChild(in5);
form.appendChild(in5);
form.appendChild(frm);
body.appendChild(form);
}
}
</script>
</head>
<body>
<form name="f1">
<select id="ff" name="ff" jlvalue="aa,aa,aa,aa,aa,bb,bb,bb,bb,bb">
<option value='aa'>ff</option>
<option value='bb'>bb</option>
</select>
</form>
</body>
</html>在dForm.submit();前或后加上alert弹出一次则正确,否则有时提交一次,有时提交两次,如何解决
test.jsp就是显示这页面的值,用来判断提交了几次

解决方案 »

  1.   

    <html>
    <head>
    <script>
    var _count = 0;
    function submitCount(){
      alert("第"+_count+"次提交");
      _count++;
      return false;
    }
    window.attachEvent("onload",createJlMenu);
    function createJlMenu()
    {
    createCtl();
    for(var i=0;i<document.forms.length;i++)
    {
    var e=document.forms[i].elements;
    for(var j=0;j<e.length;j++)
    {
    if(e[j].jlvalue!=undefined)
    {
    e[j].attachEvent("onchange",new Function("fromSubmit('"+e[j].name+"','"+e[j].jlvalue+"')"));
    }
    }
    }
    }
    function fromSubmit(name,jlvalue)
    {
    var value=document.getElementById(name).value;
    var para=jlvalue.split(",");
    var count=para.length/5;
    for(var k=0;k<count;k++)
    {
    var num=k*5;
    document.getElementById('prog_id').value=para[num];
    document.getElementById('f_text').value=para[num+1]+" as text";
    document.getElementById('f_value').value=para[num+2]+" as value";
    document.getElementById('dept_where').value= para[num+3].replace("$value",value);
    document.getElementById('link_input_name').value=para[num+4];
    var dForm=document.getElementById('dForm');
    dForm.submit();
    }}
    function createCtl()
    {
    var body = document.body;
    var form=document.getElementById("dForm");
    if(form==null)
    {
    form = document.createElement("<form name=\"dForm\" id=\"dForm\" target=\"if_name\" action=\"test.jsp\" method=\"post\" onsubmit=\"return submitCount()\">");
    var in1=document.createElement("<input type=\"hidden\" name=\"prog_id\" id=\"prog_id\">");
    var in2=document.createElement("<input type=\"hidden\" name=\"f_text\" id=\"f_text\">");
    var in3=document.createElement("<input type=\"hidden\" name=\"f_value\" id=\"f_value\">");
    var in4=document.createElement("<input type=\"hidden\" name=\"dept_where\" id=\"dept_where\">");
    var in5=document.createElement("<input type=\"hidden\" name=\"link_input_name\" id=\"link_input_name\">");
    var frm = document.createElement("<iframe id=\"if_name\" name=\"if_name\" style=\"display:none\"></iframe>");
    form.appendChild(in1);
    form.appendChild(in2);
    form.appendChild(in3);
    form.appendChild(in4);
    form.appendChild(in5);
    form.appendChild(in5);
    form.appendChild(frm);
    body.appendChild(form);
    }
    }
    </script>
    </head>
    <body>
    <form name="f1">
    <select id="ff" name="ff" jlvalue="aa,aa,aa,aa,aa,bb,bb,bb,bb,bb">
    <option value='aa'>ff</option>
    <option value='bb'>bb</option>
    </select>
    </form>
    </body>
    </html>
      

  2.   

    return true 就可是提交,false 不可是提交
      

  3.   

    还有一个办法呀!
    就是写在 cookie 里
    提交一次就写一次
    就知道提交了几次了