2014-10-27 75 views
0

嗨everyboby我只是想尝试验证一些输入和textareas与JavaScript使用开关,但它似乎不能正常工作,我的功能validarorden看起来像这样。切换案例与javascript

function validarorden(){ 
    var validado = true; 

    var tipo = document.getElementById("cmbTipoEquipo").value; //select 
    var marca = document.getElementById("cmbMarcaEquipo").value; //select 
    var modelo = document.getElementById("txtModeloEquipo").value; //input 
    var nserie = document.getElementById("txtNSerieEquipo").value; //input 
    var descripcion = document.getElementById("txtaReparacion").value; //textarea 

    //next alert shows '0 - 0 - - -' when I click on the button for the fisrt time 
    alert(tipo+" - "+marca+" - "+modelo+" - "+nserie+" - "+descripcion); 

    switch(tipo) { 
     case 0: 
      alert("debes elegir el tipo"); 
      validado = false; 
     break; 
    } 

    switch(marca) { 
     case 0: 
      alert("debes elegir la marca"); 
      validado = false; 
     break; 
    } 

    switch(modelo.length) { 
     case 0: 
      alert("debes ingresar el modelo"); 
      validado = false; 
     break; 
    } 

    switch(nserie.length) { 
     case 0: 
      alert("debes ingresar el numero de serie"); 
      validado = false; 
     break; 
    } 

    switch(descripcion) { 
     case (descripcion.length == 0): 
      alert("debes ingresar la descripcion"); 
      validado = false; 
     break; 
     case (descripcion.length > 200): 
      alert("la descripcion no debe ser mayor a 200"); 
      validado = false; 
     break; 
     case (descripcion.length < 50): 
      alert("la descripcion debe ser de al menos 50"); 
      validado = false; 
     break; 

    } 

    return validado; 
} 

我用jquery事件调用这个函数。

$("body").on("click","#btnGenerarOrden",function(){ 
     if(validarorden()) { 
      alert("Correcto"); 
     } 
    }); 

莫德洛nserie变量的情况下工作正常,但不是他们的休息,HTML代码是下一个。

<div class="col-md-4"> 
    <div class="form-group fltipo"> 
    <label class="control-label" for="cmbTipoEquipo">Tipo</label> 
    <select id="cmbTipoEquipo" class="form-control"> 
    <option value="0">Tipo</option> 
    <option value="1">Latop</option> 
    </select> 
    </div> 
</div> 

    <div class="col-md-4"> 
     <div class="form-group flmarca"> 
      <label class="control-label" for="cmbMarcaEquipo">Marca</label> 
      <select id="cmbMarcaEquipo" class="form-control"> 
      <option value="0">marca</option> 
      <option value="1">HP</option> 
      </select> 
     </div>       
    </div> 
    <div class="col-md-4"> 
     <div class="form-group flmodelo"> 
      <label class="control-label" for="txtModeloEquipo">Modelo</label> 
      <input type="text" id="txtModeloEquipo" class="form-control"> 
     </div> 
    </div> 
    <div class="col-md-4"> 
     <label class="control-label" for="txtNSerieEquipo">N.Serie</label> 
     <div class="input-group flnserie"> 
     <input type="text" id="txtNSerieEquipo" class="form-control"> 
     <span class="input-group-btn"> 
      <button class="btn btn-default" id="btnAutoNS" type="button"><span class="glyphicon 
glyphicon-random"></span></button> 
     </span> 
    </div> 
    </div> 
    <div class="col-md-8"> 
     <div class="form-group fldescr"> 
      <label class="control-label" for="txtaReparacion">Descripción de la reparación</label> 
      <textarea class="form-control" id="txtaReparacion" cols="30" rows="3"></textarea> 
     </div> 
     </div> 

我希望你们能帮助我

+2

我建议if语句switch语句在这里 – 2014-10-27 00:25:21

+0

把双引号围绕case 0 ...所以case:“0” – jroot 2014-10-27 00:30:05

回答

0

你要在这里体会到什么是一个开关case语句使用===比较。这意味着被比较变量的类型必须相同。因此,将xxxxx.length0进行比较是可以的,因为长度返回整数。

但是比较来选择元素的值返回一个字符串,所以你需要把各地报价0像这样 case "0":

你也可以使用switch (parseInt(xxx))来解决该问题

0

在任何命令式编程语言其中包括switch功能,在case语句必须是常量,生成常量(如getter)或字符串文字的表达式之后测试的常量。

你的主要问题是,你尝试应用switch语句的布尔:

switch(descripcion) { 
    case (descripcion.length == 0): 
     alert("debes ingresar la descripcion"); 
     validado = false; 
    break; 
    case (descripcion.length > 200): 
     alert("la descripcion no debe ser mayor a 200"); 
     validado = false; 
    break; 
    case (descripcion.length < 50): 
     alert("la descripcion debe ser de al menos 50"); 
     validado = false; 
    break; 
} 

在代码中的这一部分,你尝试测试真或假的陈述。你应该写一个if/else if块来测试长度值。

使用switch语句这种方式会像在问,

是在文本框中等于长度大于200的信息?

它只是没有任何意义。

您遇到的另一个问题是将字符串与常量进行比较。输入场的value属性为String类型,这意味着你需要得到的field.value长度比较它恒定的,就像这样:

switch (tipo.length) { 
    case 0: 
     ... 
    break; 
} 

参考http://en.wikipedia.org/wiki/JavaScript_syntax#Switch_statement为规则的完整列表切换语句。