自己实在想不出实现的方法,特发到这里,还请高手指点一二。谢了!问题是这样的,偶想在页面上面实现双语言的切换,但是从英文修改为中文之后按钮的值也跟着变成了中文。这时候如果提交这个form则会提交中文的值,那么我在后台的程序里面就无法识别了。那么有什么办法,在按钮上面显示的是中文,但是form提交的时候提交的值确是英文的?如,下面的一个简单的html代码:<title>T&amp;W Wireless Router</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" >
// <!--
function initLanguage()
{
document.getElementById( "lang_Apply" ).value = "启用/保存";
document.getElementById( "lang_Cancel" ).value = "重置";
}
//-->
</script>
</head><body onLoad="initLanguage();">
<form method="post" action="ssid.asp">
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td width="150"></td>
      <td>&nbsp;&nbsp;</td>
      <td>
  <input id="lang_Apply" type="submit" name="action" value="Apply">
  <input id="lang_Cancel" type="reset" name="action" value="Cancel">
    </td>
  </tr>
</table>
</form>
</body>
</html>
进入该页面之后两个按钮就显示中文了,但是如果点击‘Apply’按钮,那么其提交的form里面,这个action的值就是中文了,我再后台就无法识别了。请高手帮忙呀,回帖的兄弟均有分呀。 谢谢!

解决方案 »

  1.   

    不知道是不是这样:<input id="lang_Apply" type="submit" name="action" onclick="formSubmit" value="Apply">function formSubmit(){
        document.getElementById( "lang_Apply" ).value = "Apply";
        document.getElementById( "lang_Cancel" ).value = "Cancel";
    return true;}
      

  2.   


    <input id="lang_Apply" type="submit" name="action" onclick="formSubmit()" value="Apply">
    <script type="text/javascript">
    function formSubmit(){
        document.getElementById( "lang_Apply" ).value = "Apply";
        document.getElementById( "lang_Cancel" ).value = "Cancel";return true;} 
    </script>
      

  3.   

    不知道你为什么取submit和reset按钮的值,取它们的值,有什么用
      

  4.   

    用一个 hidden input来保存语言,
    <input type="hidden" name="Lang" value=""/>js更改按钮显示语言时,同时更改Lang的值.提交到后台后,后台根据Lang的值来处理不同的语言
      

  5.   

    回#2楼:
    我先也是想到了这个办法,但是我的有些页面有多个按钮,点击提交时会有一小段时间按钮上面显示的字由中文变为英文,这个改变估计客户那边不太会接受。我问了测试那边,他们说他们也不能接受,所以我只有放弃。回#3楼:
    取他们值判断不同的应用呀,软件构架就是这样的。如果我要修改成别的形式,那么可能要修改到httpd进程了,那改动就大了,时间精力都不够的。回#4楼:
    这也要添加比较多的代码,并且整个系统还要重新验证和测试。工作量太大了。谢谢三位的回复。不知还有没有别的什么方法?
      

  6.   

    我不明白你的意思:
    action的值是中文的?action的哪个值,是按钮的吗?
    按钮的value可以提交?
      

  7.   

    思路:
    在页面中额外放两个hidden元素(hidden的name属性都必须为"action"),页面加载时,将hidden的value分别设为“提交按钮”和"重置按钮"的value,表单提交时,因为服务器是认页面的name属性的,所以我们就将已经更改为中文的按钮的name换掉(但是页面中有我们的hidden,它们代替了原来的“提交”和“重置”)
    代码:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <html>
    <head>
    <title>T&amp;W Wireless Router</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script language="javascript">
    //     
    function initLanguage() {
    document.getElementById("lang_ApplyHidden").value = document
    .getElementById("lang_Apply").value;
    document.getElementById("lang_CancelHidden").value = document
    .getElementById("lang_Cancel").value;
    document.getElementById("lang_Apply").value = "启用/保存";
    document.getElementById("lang_Cancel").value = "重置";
    }
    function changName() {
    document.getElementById("lang_Apply").name = "dfdfdfdfdfdf";
    document.getElementById("lang_Cancel").name = "dfdfdfdfdfdf";
    return true;
    }
    //
    </script>
    </head> <body onLoad="initLanguage();">
    <form method="post" action="ssid.asp">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td width="150"></td>
    <td>
    &nbsp;&nbsp;
    </td>
    <td>
    <input id="lang_Apply" type="submit" name="action" value="Apply"
    onclick="return changName()">
    <input id="lang_Cancel" type="reset" name="action" value="Cancel">
    <input id="lang_ApplyHidden" type="hidden" name="action">
    <input id="lang_CancelHidden" type="hidden" name="action">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>
      

  8.   

    前台是没什么折了啊,毕竟你都改了,传回去的值就是会变。
    后台是怎么以做的呢?如果要根据value来判断的话,至少会有类似于
    if (value == "Apply")
    之类的东西吧,为什么不多加个条件呢
    if (value == "Apply" || value == "启用/保存")当然这样在添加新语言的时候会有很大负担,不过谁叫他们一开始没考虑多语言的问题呢,避免不了了
      

  9.   

    按钮的的value值也可以提交吗,这种情况最好还是用hidden隐藏域来解决吧
      

  10.   

    submit和reset按钮的值是根据你自己的系统来自动显示的
    英文操作系统一般情况下为submit和reset
    中文操作系统一般情况下为提交和重置
      

  11.   

    建议楼主 改用资源束解决 后台用MappingDispatchAction控制
      

  12.   

    把原来的这两句:
    <input id="lang_Apply" type="submit" name="action" value="Apply">
    <input id="lang_Cancel" type="reset" name="action" value="Cancel">换成:
    <input type="hidden" id="hidSubmit" name="action"/>
    <input id="lang_Apply" type="button" name="action" 
           submitVal="Apply"  value="Apply"
           onclick="document.getElementsById('hidSubmit').value=this.submitVal;this.form.submit();">
    <input id="lang_Cancel" type="reset" name="action"  value="Cancel">
      

  13.   

    偶使用了#8楼那位朋友的办法,直接加一个隐藏的按钮,然后把name修改过来就可以了。如下:    <input type="hidden" name="action" value="Apply">
        <input id="lang_Apply" type="submit" name="action_active" value="Apply">
    但如果在这个form中还包括下面这些按钮呢<button type="hidden" name="action" value="Select"></button>
    <button id="lang_select" type="submit" name="action_select" value="Select">Select</button><input id="lang_submit_new" type="submit" name="action" value="New">
    <input id="lang_submit_delete" type="submit" name="action" value="Delete">
        
    我试了,如果按照上面的方面加一个隐藏按钮的话,原版按钮的功能就全失效了,都是提交Apply了。
    看来还是不行呀。在此说明一下一些朋友的疑问,这些web页面是用在mini型的嵌入式系统里面的,flash和ram分别只有2M和8M,软件中还包括了linux内核,应用程序和这些配置页面,所以增加后台的语言识别或者其他复杂的方法都是不行的。
      

  14.   

    有没有什么方法,我点击一个按钮,而那个按钮的动作并不submit,而是动作某个隐藏的按钮submit?
      

  15.   

    用JS提交formonclick = function(){
     document.form("name").submit();}
      

  16.   


    <form method="post" action="ssid.asp">
    <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="150"></td>
          <td><input type="text"></td>
          <td>      <input id="lang_Apply1" type="submit" name="action" value="启用/保存" onclick="javascript:document.getElementById('s').onclick();">
          <input id="lang_Cancel1" type="reset" name="action" value="重置"><div style="display:none;">
          <input id="lang_Apply" type="submit" name="action" value="Apply">
          <input id="lang_Cancel" type="reset" name="action" value="Cancel">
    </div>
        </td>
      </tr>
    </table>
    </form>把要判断的都放到隐藏的DIV中
      

  17.   

    这样判断是哪个按钮:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="js/jquery-1.3.2.min.js"></script>
    <title>无标题文档</title>
    </head>
    <body>
    <form action="http://www.baidu.com" method="post" id="myForm">
    <input type="submit" value="提交1" id="sub" />
    <button type="submit" id="sub2">提交2 </button>
    </form>
    </body>
    <script language="javascript">
    $(function()
       {
       $("[type=submit]").bind("click",s);
       
       });
    function s()
    {
    alert(this.id);
    }
    </script>
    </html>这样可以判断是哪个按钮,你自己再操作吧。
    18楼的操作试试,我看行。
      

  18.   

    前面的方法好象不行
    改ACTION应该可以满足你的要求<head>
    <title>T&amp;W Wireless Router</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script language="javascript" >
    // <!--
    function initLanguage()
    {
        document.getElementById( "lang_Apply" ).value = "启用/保存";
        document.getElementById( "lang_Cancel" ).value = "重置";
    }
    function mypost(v)
    {
    document.form1.action="ssid.asp?action="+v;
    form1.submit();
    }
    //-->
    </script>
    </head><body onLoad="initLanguage();">
    <form id="form1" name="form1" method="post" action="">
    <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="150"></td>
          <td>&nbsp;&nbsp;</td>
          <td>
          <input id="lang_Apply" type="button"  value="Apply" onclick="mypost(this.value)">
          <input id="lang_Cancel" type="reset"  value="Cancel">
        </td>
      </tr>
    </table>
    </form>
    </body>
    </html>
      

  19.   

    如果你不想做两种语言国际化的话,自由在后台接受的时候做个判断,if(值=“按钮”||值=“button”){};