2012-11-24 2 views
0
function insertQuestion(form) { 

var x = "<img src='Images/plussigndisabled.jpg' width='30' height='30' alt='Look Up Previous Question' class='plusimage' name='plusbuttonrow'/><span id='plussignmsg'>(Click Plus Sign to look <br/> up Previous Questions)</span>" ; 

    if (qnum == <?php echo (int)$_SESSION['textQuestion']; ?>) { 

    $('#mainPlusbutton').html(x); // no need to create a jQuery object 

} 

//append rows into a table code, not needed for this question 

} 

<form id="QandA" action="<?php echo htmlentities($action); ?>" method="post"> 

<table id="question"> 

<tr> 
<td colspan="2"> 
<a onclick="return plusbutton();"> 
<img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/> 
</a> 
<span id="plussignmsg">(Click Plus Sign to look up Previous Questions)</span> 
</td> 
</tr> 
</table> 

<table id="questionBtn" align="center"> 
<tr> 
<th> 
<input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" /> 
</th> 
</tr> 
</table> 

</form> 

위의 코드에서 일어나는 현상은 사용자가 "질문 추가"버튼을 클릭하면 질문 번호가 테이블에 추가된다는 것입니다. 이제는 if 문이 jquery 함수에서 충족되면 더하기 버튼 이미지 Images/plussign.jpgImages/plussigndisabled.jpg으로 대체한다고 가정합니다. 하지만 그렇게하지는 않습니다.이미지 버튼을 일반 이미지로 바꾸는 방법

제 질문은 이미지 버튼을 다른 이미지 버튼으로 대체하는 가장 좋은 방법은 무엇입니까? 또한 문서 준비 기능에서 나는 Images/plussign.jpg 버튼을 다시 표시해야합니다.

+0

을 변경 트래버스를 클래스를 사용하고 수정에 수정해야 할 것이다하시기 바랍니다 [ 'textQuestion']; ? 아니면 조금 덜 복잡해도 스크립트를 디버그하고 실제로 if 문을 충족시키는 지 확인할 수 있습니까? –

+0

@KiroConeski if 문이 완전히 일치합니다. 나는 위의 코드에 포함시키지 않았지만 if 문에 도달 할 때 일부 비활성화 특성을 포함 시켰으며 attrbutes를 비활성화합니다. 세션 변수에는 단순히 질문의 총 개수가 포함되어 있습니다. – user1819709

답변

1

replaceWith() 방법을 사용할 수

$('#mainPlusbutton').replaceWith(x); 

API 참조 : http://api.jquery.com/replaceWith/

난 당신이 정말로 유일한 버튼의 src을 교체 할 생각 동시에 비활성화 할 수 있습니다. attr()prop() 방법으로 수행 할 수 있습니다.

var newImage='Images/plussigndisabled.jpg'; 

$('#mainPlusbutton').attr('src',newImage).prop('disabled',true); 

ID의 한 페이지에서 고유해야합니다 알고, 그래서 당신이 행을 복제하는 경우 당신은 당신이 $ _SESSION에 저장하는 일 해당 요소

+0

유일한 문제는 클릭을 사용 중지하지 않는 것입니다. 이미지를 클릭해도 여전히 클릭 방법을 수행합니다. 이미지 버튼에 대한 html을 보면'onclick = "return plusbutton();"함수를 수행합니다. 이 기능을 어떻게 비활성화 할 수 있습니까? – user1819709

+0

인라인'onclick'을 완전히 제거하고 jQuery를 사용한 다음 jQuery 클릭 핸들러를 사용하여'prop()'메소드를 사용하여 버튼이 비활성화되었는지 여부를 확인하십시오. 그렇지 않으면 그냥 내 첫 번째 솔루션을 사용하여 html로 바꿉니다 – charlietfl

1

그 코드는 나에게 짧은 두통을주었습니다.

귀하의 코드

$('#mainPlusbutton').html(x); 

는 이미지 태그를 말합니다. html의 호출은 을 태그의 안에 바꿔야하지만 이미지 태그에는 아무 것도 포함 할 수 없으므로 바꿀 내용이 없습니다.

+0

이 문제를 어떻게 해결해야하는지 알고 있습니까, 아니면이 문제를 해결할 때 더 좋은 아이디어가 있습니까? – user1819709

+0

id 'mainPlusbutton'을 이미지 parent (앵커/링크 태그)로 이동합니다. 이렇게하면 사용하지 않는 이미지간에 되돌릴 수 있습니다 .--- 그렇지만 원하는 스팬 태그도 있습니다. 거기에 .... 너도 그걸 대체하고 싶어? ... 내 "더 나은"아이디어를 원한다면, 아마도 내용을 바꾸는 것을 혼란에 빠뜨리지 않을 것입니다. CSS로 표시하고 어딘가에 클래스 속성을 변경하기 만하면됩니다. – JayC

0

이 이미지 태그를 묶기 위해 span 또는 div를 사용하는 것이 좋습니다.

<img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/> 

이 스크립트를 변경하십시오. 새로운 HTML을 전체 버튼을 대체 할 경우

$('#mainPlusbutton').parent().html(x); 
관련 문제