2010-03-11 5 views
0

j'ai un formulaire avec 2 entrées de texte et 2 boutons radio, comme ci-dessous:question Javascript sur les formes

<form id="form1" method="get" onSubmit="exec()" action="default.html"> 
    <label>First input<label> 
    <input type="text" id="input1"/><br /> 
    <label>Second input</label> 
    <input type="text" id="input2"/><br /> 
    <label>Radio button 1</label> 
    <input type="radio" id="radio1"/> 
    <label>Radio Button 2</label> 
    <input type="radio" id="radio2"/><br /> 
    <input type="submit" value="Search"> 
</form> 

Une fois que l'utilisateur clique sur le bouton de recherche la méthode exec() sera invoquée, et ce que je suis à la recherche d'aide avec. Comme vous pouvez le voir dans le code ci-dessus, l'action par défaut pointe vers une page appelée default.html, mais cela peut changer en fonction de la zone de saisie dans laquelle l'utilisateur a entré le texte et du bouton radio sélectionné. Je pense donc que ma méthode exec() devrait ressembler à ceci:

function exec() 
{ 
    if(document.getElementById("radio1").checked) && 
    if(document.getElementById("input1").**has text entered by user** 
    { 
     document.getElementById("form1").setAttribute("action", "AnotherPage.html") 
    } 
} 

Je pense que le code que j'ai devrait y travailler, qui est si je savais ce que la syntaxe doit être là où je suis entré « a le texte entré par l'utilisateur » . Quelqu'un peut-il me dire ce que cette syntaxe devrait être? Est-ce que je vais dans la bonne direction à propos de cela ou y a-t-il un meilleur moyen?

Merci d'avance.

Répondre

2

document.getElementById ("entrée1"). a rédigé un message par l'utilisateur

devrait être

document.getElementById("input1").value.length > 0 

Je recommande fortement les dépenses de 10 minutes à la recherche d'un jQuery. Faites juste référence à jquery.js dans votre page et vous éliminerez votre prochain mal de tête qui est une incompatibilité entre les navigateurs.

+0

Merci beaucoup très bien – Ruth

0

Cela devrait fonctionner:

document.getElementById("input1").value.length > 0 
+0

Merci beaucoup très – Ruth

0

propriété value stocke le texte entré dans le champ. Vous devez vérifier avant suppression des espaces de sa longueur, de sorte que quelque chose comme ça pourrait fonctionner pour vous:

document.getElementById("input1").value.replace(/^\s*|\s*$/g, '').length > 0 
0
function exec() 
{ 
    if(document.getElementById("radio1").checked && document.getElementById("input1").value!='') 
    { 
     document.getElementById("form1").setAttribute("action", "AnotherPage.html") 
    } 
} 

Je reformaté votre instruction IF. Cependant, sachez que les champs ont besoin d'un attribut NAME s'ils vont être envoyés au serveur, et pas seulement d'un identifiant.

1

En dépit de ne pas savoir comment détecter le texte, votre instruction if est un peu hors ...

function exec() 
{ 
    if (document.getElementById("radio1").checked && document.getElementById("input1").value != "") 
    { 
     document.getElementById("form1").setAttribute("action", "AnotherPage.html") 
    } 
} 

Il y a quelques cas supplémentaires pour gérer si ... si l'utilisateur a sélectionné l'option 1 mais pas texte entré? Il se peut que vous souhaitiez changer votre onSubmit="exec()" en onSubmit="return exec()" et return false de votre fonction exec si certaines conditions ne sont pas remplies.

+0

Merci pour votre aide – Ruth

0

Il pourrait également être

if(document.getElementById("input1").value){ 
    /* code */ 
} 

parce qu'une chaîne vide évaluera false.