2011-10-19 25 views
5

Nie jestem dobrze zorientowany w javascript, więc mam problem z uruchomieniem następującego skryptu. Muszę sprawdzić, czy wprowadzona nazwa jest również zawarta w wiadomości.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

A gdzie jest problem? – campino2k

+0

'document.getElementById()' zwraca element, a nie wartość elementu. Aby uzyskać wartość elementu, można wykonać polecenie "document.getElementById (" someID "). – aroth

Odpowiedz

8

Wydaje się, że próbujesz uzyskać wartość wejścia FirstName. getElementById() zwraca tylko sam węzeł. Zamiast dostępu do swojej wartości:

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

Należy również pamiętać, że masz błędnie getElementById, o kapitale D na końcu, gdzie powinno być małe.

+0

Dzięki Michael, pracujcie przyjemnie! –

+0

W jaki sposób zmodyfikowałbym kod, aby uzyskać opcję "tak, nie" w alarmie, gdzie "tak" pozwala użytkownikowi przejść dalej, ale nie zatrzymuje ich na stronie. –

+0

@Darren Gotuj zamiast 'alert()' użyj 'confirm()' i zwróć jego wartość: 'return confirm ('Name not in message');' –

1

'FirstName' z cytatem jest ciąg, a nie zmienną FirstName. Potrzebne są:

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

EDIT: brakowało mi dwie rzeczy wcześniej. Najpierw trzeba uzyskać wartość węzła, a drugi to wielkie D. Tak więc poprawny kod jest:

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

document.getElementByID powinny być document.getElementById

-1

Spróbuj:

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

W swojej exemple szukasz następujący ciąg FirstName nie wartość zmiennej FirstName

1

to co chce, ja myśleć.

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

Najlepszy sposób korzystania z jQuery. Twój kod możemy zminimalizować do maksymalnie 2 linii:

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