c#
  • javascript
  • html
  • function
  • windows-runtime
  • 2013-06-26 34 views 0 likes 
    0

    所以我試圖構建一個包含WebView的win 8應用程序。 WebView包含下面的HTML代碼(+ JavaScript)。使用JavaScript獲取選中的RadioButtons

    <!DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
    <html> 
    <head> 
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8' > 
    
    <script type='text/javascript'> 
    function get_radio_value() 
    { 
        for (var i=0; i < document.myForm.frage1.length; i++) 
        { 
        if (document.orderform.frage1[i].checked) 
        { 
          var rad_val = document.myForm.frage1[i].value; 
          return rad_val; 
        } 
        } 
    } 
    </script> 
    
        <title>Kundenfragebogen</title> 
    </head> 
    
    <body> 
        <h1>Kundenfragebogen</h1> 
    <div id='myDiv'>Hello</div> 
    <form name='myForm' action=''> 
    <table border='2'> 
        <tr> 
        <td></td> 
        <td>sehr gut</td> 
        <td>gut</td> 
        <td>schlecht</td> 
        </tr> 
        <tr> 
        <td>Wie geht es Ihnen?</td> 
        <td><input type='radio' name="frage1" value='1'/>Mir ging es noch nie besser!</td> 
        <td><input type='radio' name="frage1" value='2'/>Es geht mir so wie immer.</td> 
        <td><input type='radio' name="frage1" value='3'/>Heute geht einfach gar nichts…</td> 
        </tr> 
        <tr> 
        <td>Können Sie Auto fahren?</td> 
        <td><input type='radio' name="frage2" value='1'/>Ja</td> 
        <td></td> 
        <td><input type='radio' name="frage2" value='3'/>Nein</td> 
        </tr> 
        <tr> 
        <td>Möchten Sie unseren Newsletter abonnieren?</td> 
        <td><input type='radio' name="frage3" value='1'/>Ja</td> 
        <td></td> 
        <td></td> 
        </tr> 
    </table> 
    
    <input type='button' value='Formular absenden' onclick="return get_radio_value()"/> 
    </form> 
    </body> 
    </html> 
    

    所以html包含一些單選按鈕和一個按鈕。我在2年前使用了JavaScript(只是一點點),所以我不知道如何編寫確切的代碼。我在網上找到了一些東西,但它沒有做到我想要的。我想擁有以下內容:

    用戶可以檢查RadioButton。當用戶點擊Button時,JavaScript函數應該返回所有選中的單選按鈕(我只需要知道選中哪個RadioButton)。 因爲我知道在我的Windows 8應用程序的單選按鈕的名稱,我能做到以下幾點:

    var object = WebView.InvokeScript("JavaScriptFunctionNAME", NameOfRadiobutton); 
    

    所以WebView中調用腳本,並應該得到的回報單選按鈕,這是檢查的價值。在Javascript

    NameOfRadiobutton功能的

    「JavaScriptFunctionNAME」 = NAME =的單選按鈕的名稱作爲參數(例如,「frage1」)。

    目前我正在返回RadioGroup「frage1」中選中的單選按鈕的值。我如何通過它的參數檢查每個RadioButton?通過這個我的意思是我有一個參數「frage1」,並返回選中的RadioButton的值。在此之後,我再次使用參數「frage2」調用該函數並返回選中的RadioButtons值。任何人都可以用JavaScript函數來幫助我嗎?

    回答

    2

    單選按鈕由它們name屬性分組的檢查名稱。你可以使用document.getElementsByName單選按鈕的集合,並期待在每個檢查狀態,例如: -

    function FindChecked() { 
        var elements = document.getElementsByName("frage1") 
        for (var i = 0; i < elements.length; i++) { 
         if (elements[i].checked) { 
          return elements[i].value; 
         } 
        } 
    } 
    

    將其組內返回檢查單選按鈕的值。

    jsfiddle example

    編輯:從C#代碼通過組名這個功能,你可以這樣做: -

    public class YourClass 
    { 
        public string GroupName { get { return "frage1"; } } 
    } 
    

    然後JavaScript函數會變成:

    function FindChecked() { 
        var elements = document.getElementsByName('<%= this.GroupName %>') 
        for (var i = 0; i < elements.length; i++) { 
         if (elements[i].checked) { 
          return elements[i].value; 
         } 
        } 
    } 
    
    +0

    我想傳遞一個參數,並根據參數獲取值。使用你的函數,我會執行'FindChecked(RadioName)'和'var elements = document.getElementsByName(RadioName)',所以我可以在我的C#程序中傳遞參數(例如'frage1'),語法是正確的這會工作嗎?順便說一句,當我使用InvokeScript時,我只能將一個字符串數組傳遞給JavaScript函數。 – Rudi

    +0

    是的語法是正確的。如果您需要從您的C#代碼傳入組名,那麼您可以使用內聯服務器標籤將組名傳遞給javascript函數,例如'Function FindChecked('<%= groupName%>')' – DGibbs

    +0

    編輯我的答案來解釋 – DGibbs

    1

    試試這個,這將返回單選按鈕

    <script type='text/javascript'> 
        function get_radio_value() 
        { 
         var nameArry = []; 
         var allInputs = document.myForm.getElementsByTagName('input'); 
         for (i = 0; i < allInputs.length; i++) { 
          if (allInputs[i].type == 'radio' && allInputs[i].checked) { 
          nameArry.push(allInputs[i].name); 
          } 
         } 
         alert(nameArry) 
        } 
    </script> 
    
    +0

    編輯我的問題。我現在返回RadioButton的值,但只返回名稱爲「frage1」的RadioButton的值。我想在我的C#程序中做一個for-loop,在那裏我通過參數傳遞RadioButton的名字。通過這個,我想調用JavaScript函數並使用傳入參數的名稱獲取RadioButton的選中值。您的解決方案目前僅給出RadioGroup-Name「frage1」的值。 – Rudi

    相關問題