2011-10-19 24 views
5

No estoy bien informado con javascript, así que estoy teniendo problemas para que funcione la siguiente secuencia de comandos. Necesito verificar si un nombre ingresado también está contenido dentro de un mensaje.Javascript indexOf

<input type="hidden" id="Message" value="<%= rsDetail.Fields("Message") %>"> 
<input type="hidden" id="FirstName" value="<%= rsDetail.Fields("FirstName")%>"> 

<script type="text/javascript"> 
<!-- 
function NameCheck(){ 
var FirstName=document.getElementByID('FirstName'); 
var CardMessage=document.getElementByID('Message'); 
var aPosition = CardMessage.indexOf('FirstName'); 

if (aPosition == -1) 
alert("Name Not In Message."); 
} 
--> 
</script> 

<a href="NextPage.asp" onClick="NameCheck();">Proceed</a> 
+0

¿Y dónde está el problema? – campino2k

+0

'document.getElementById()' devuelve el elemento, no el valor del elemento. Para obtener el valor del elemento, puede hacer 'document.getElementById ('someId'). Value'. – aroth

Respuesta

8

Parece que usted está tratando de obtener el valor FirstName de la entrada. getElementById() solo devuelve el nodo en sí. En lugar acceder a su valor:

var FirstName = document.getElementById('FirstName').value; 
var CardMessage = document.getElementById('Message').value; 

// Then use the variable `FirstName` instead of the quoted string 
var aPosition = CardMessage.indexOf(FirstName); 

// Best practice would be to use === for strict type comarison here... 
if (aPosition === -1) 
    alert("Name Not In Message."); 
} 

También, nota que has escrito mal getElementById, con un capital D al final donde debe estar en minúsculas.

+0

Gracias Michael, trabaja un regalo! –

+0

¿Cómo puedo modificar el código para que aparezca una opción sí no en la alerta donde sí permite al usuario progresar pero no los mantiene en la página. –

+0

@Darren Cook en lugar de 'alert()' use 'confirm()' y devuelva su valor: 'return confirm ('Name not in message');' –

1

'FirstName' citando es cadena, no la variable FirstName. Necesita:

// remove the quote, pass the variable FirstName instead of string 'FirstName' 
var aPosition = CardMessage.indexOf(FirstName); 

EDITAR: Me perdí dos cosas antes. Lo primero que necesita para obtener el valor del nodo, y la segunda es la mayúscula D. Así que el código correcto es:

var FirstName = document.getElementById('FirstName').value; 
var aPosition = CardMessage.indexOf(FirstName); 
0

document.getElementByID debe ser document.getElementById

-1

Probar:

var FirstName=document.getElementByID('FirstName'); 
var aPosition = CardMessage.indexOf(FirstName); 

En su exemple que están en busca de la siguiente cadena FirstName no el valor de la variable FirstName

1

Esto lo que está tratando, yo pensar.

var FirstName=document.getElementById('FirstName').value; 
var CardMessage=document.getElementById('Message').value; 
var aPosition = CardMessage.indexOf(FirstName); 
1

La mejor manera de usar jQuery. Su código se puede minimizar a un máximo de 2 líneas:

$("#click").click(function() { 
    var found = $('#Message').val().indexOf($("#FirstName").val()); 
    console.log(found); 
}); 
Cuestiones relacionadas