嗨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>
我希望你们能帮助我
答案 0 :(得分:0)
你需要在这里意识到,switch case语句使用===比较器。这意味着要比较的变量类型必须相同。因此,将xxxxx.length
与0
进行比较是可以的,因为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。