用javascript切换案例

时间:2014-10-27 00:21:35

标签: javascript validation switch-statement

嗨everyboby我只是尝试使用开关使用javascript验证一些输入和textareas,但它似乎无法正常工作,我的函数调用 validarorden 看起来像这样。 / p>

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");
        }
    });

modelo 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 个答案:

答案 0 :(得分:0)

你需要在这里意识到,switch case语句使用===比较器。这意味着要比较的变量类型必须相同。因此,将xxxxx.length0进行比较是可以的,因为length返回一个整数。

但是,比较select元素的值会返回一个字符串,因此您需要在0周围加上引号 case "0":

您还可以使用switch (parseInt(xxx))来解决问题

答案 1 :(得分: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;
}

在代码的这一部分中,您尝试测试true或false语句。你应该写一个if / else if块来测试长度值。

使用switch语句就像问,

  

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

它没有任何意义。

另一个问题是将字符串与常量进行比较。输入字段的value属性为String,这意味着您需要获取field.value的长度以将其与常量进行比较,如下所示:

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

有关switch语句的完整规则列表,请参阅http://en.wikipedia.org/wiki/JavaScript_syntax#Switch_statement