1

Ich habe ein Textfeld für die Ereignisse an eine Funktion gebunden sind, zu ändern, die das Textfeldes des Wert bestätigt und kann eine entsprechende Validierungsfehlermeldung in das DOM über dem Textfeld Spleiß. Wenn das Änderungsereignis, indem Sie auf eine von einem Paar von etwas unabhängigen Radio-Buttons ausgelöst wird, der Radioknopf aus, gewinnt den Fokus, sondern gegen meine und die Erwartungen des Anwender angeklickt wird, wird nicht geprüft - das ist das Problem.Radiotaste deaktiviert, sobald in AJAX-ähnlichem Szenario geklickt

Obwohl die Validierung in dem endgültigen System wird mit AJAX-Server-Seite ausgeführt wird, zeigt der folgende Code, dass AJAX nichts mit dem Problem zu tun hat.

Vielen Dank, wenn Sie mir sagen kann, was ich bin fehlt hier:

<html> 
<head>                 
<STYLE type="text/css"> 
    .highlighted { color: red; } 
</STYLE> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>   
</head>                 
<body>                 

<span id="errors"> 
</span> 

<label for="mytextfield">First, type something in this textfield</> 
<input type="text" id="mytextfield" name="mytextfield"/> 

<p>Second, click on one of these radio buttons</> 

<INPUT TYPE="radio" NAME="binaryquestion" VALUE="Y" >Yes</> 
<INPUT TYPE="radio" NAME="binaryquestion" VALUE="N" >No</> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     //$("#mytextfield").change(validateTextField); 
     $("#mytextfield").change(spliceInTheValidationResultMessage); 
    }); 

    function validateTextField() { 
      $.ajax({ 
       url: 'http://www.google.com', 
       success: function(data) { 
        spliceInTheValidationResultMessage(); 
       } 
      }); 
    } 

    function spliceInTheValidationResultMessage() { 
     $("#errors").append("<p>Thank you for your input!</p>").addClass("highlighted"); 
     alert("I expect the radio button that you clicked to become checked. However, close this dialog and you'll see that it will have gained the focus but is NOT checked!"); 
    }; 

</script> 
</body> 
</html> 
+0

, wo der Code ist, dass das Optionsfeld Zustand zu ändern versucht? Ich kann es nicht sehen. – scunliffe

+0

Es gibt keinen solchen Code. Wenn Sie die Seite in einen Browser laden und auf eines der Optionsfelder klicken, besteht das Problem darin, dass das Aktivieren des Optionsfelds davon abhängt, dass Sie nicht zuvor etwas in das Textfeld eingegeben haben. – user559496

+0

Eine weitere Verfeinerung der Definition des Problems: Das Problem ist, dass, ob das Optionsfeld aktiviert wird dir nicht etwas, in das Textfeld eingegeben haben, unmittelbar vorher bedingt ist. – user559496

Antwort

0

Es tut mir leid, ich habe ein wenig Mühe hatte nach dem, was Sie zu tun versuchen, aber versuchen Sie zu tun etwas wie das?

<input id="radio1" type="radio" name="binaryquestion" value="Y">Yes</> 
<input id="radio2" type="radio" name="binaryquestion" value="N">No</> 
<script type="text/javascript">$(document).ready(function() { 
    //$("#mytextfield").change(validateTextField); 
    //$("#mytextfield").change(spliceInTheValidationResultMessage); 
    $("#radio1").bind("click", spliceInTheValidationResultMessage, false); 
    $("#radio2").bind("click", spliceInTheValidationResultMessage, false); 
}); 

ich nur einfach hinzugefügt id-Attribute an Ihren Radio-Button Eingänge und verwendet die jQuery-bind() -Methode auf sie. Wahrscheinlich möchten Sie die Funktion validateTextField() so ändern, dass sie den Text im Textfeld erfasst.

+0

Jedes Mal, wenn der Wert des Textfelds als geändert betrachtet wird (dh der Benutzer klickt auf das Textfeld in ein anderes Feld, nachdem er den Wert des Textfelds geändert hat), wird mein Javascript benötigt, um eine Textfeldvalidierung zu bewirken Fehler, der innerhalb des Bereichs "errors" gemeldet werden soll. Dies wird beispielsweise erreicht, indem die "onchange" -Funktion des Textfelds an validateTextField gebunden wird. Tabbing aus dem Textfeld zu einem Radio-Button und drücken Sie die Leertaste wechseln Funkzustand funktioniert gut, während „direkt“ ein Optionsfeld nicht die geklickt Schaltfläche in dem überprüften Zustand zu verlassen. – user559496

+0

Ich habe gerade erst festgestellt, dass ich noch nicht behauptet habe, dass dieses Problem sicherlich direkt mit der Mutation des DOM im Onchange-Event-Handler des Textfelds verbunden ist. Während das Klicken auf ein Optionsfeld in meiner Seite ** immer ** den Radioknopf mit dem Fokus (gepunktete Fläche um die Schaltfläche) belässt, zeigt, dass der Browser den Klick erkannt hat, als ob die Browserbestimmung von WHAT geklickt wurde wird teilweise durch die Mutation des DOM kompromittiert (und die damit verbundene Neupositionierung von allem unterhalb der Nachricht, die in die Nachricht eingefügt wurde). – user559496