2012-04-25 2 views
0

필요한 것이 아니라, 모든 ID를 업데이트하지만 나는 http://jsfiddle.net/6ms4T/1/jQuery를 입력 단지 하나의 내가 데 문제는 상당히 어려운 내가 설명하기위한 것입니다

무엇을 달성하려고하는 것은으로하는 jsFiddle에서 복제 한 'Quantity'텍스트 상자를 업데이트하면 다른 곳에 값을 표시하고 싶습니다 (아래의 '비용 라인'이라고하는 라인).

기본적으로 첫 번째 입력란 (qty_item_1)을 업데이트하면 해당 제품과 관련된 항목이 아닌 '비용 라인'의 모든 (quant_) ID가 업데이트됩니다.

function recalc(){ 

$("[id^=quant_]").text($("input[id^=qty_item_]").val()); 

등 ...

전체 코드는 여기에 있습니다 : http://jsfiddle.net/6ms4T/1/

어떤 도움을 주시면 감사하겠습니다.

+0

당신은 선택기를 단순화하기 위해 내가 asp.net의 비주얼 베이직을 사용하고 있습니다 ... – jorgebg

+0

관련 요소들 사이의 일반적인 클래스를 공유하고 각 입력 상자에 대한 고유 ID의이 필요합니다 . –

+0

동의하지만 클래스를 추가하여 공통 요소를 선택하고 jQuery 코드를 단순화 할 수도 있습니다. – jorgebg

답변

0

당신은 변화 요소의 ID를 찾아 다음 계산의 나머지 부분에 사용하기 위해 그것의 숫자 부분을 추출 할 수 있습니다. 여기에 내가 변화 양상과 working version이다.없는 깨끗한 찾고 코드 동안

var uniqueOne = $(this).attr("id").match(/\d+/); 
$("[id^=quant_][id$="+uniqueOne+"]").text($("input[id^=qty_item_][id$="+uniqueOne+"]").val()); 

는 무엇을하는 일은 quant_로 시작하고 uniqueOne로 끝나는 ID를 찾을 수 있습니다. 당신은 아마도 이것을 압축 할 수 있지만 두 개의 선택자 (시작과 끝)를 결합하는 하이라이트입니다.

많은 멋진 아이디어가있는 것 같습니다.

편집 : 당신의 아이디의이 qty_item_로 시작하지 않는 경우

, 당신은 다른 선택을 사용해야합니다. 이 과일의 가장 낮은 매달린 과일은 contains selector : id*=blah입니다.

'총'ID를 가진 버전을 찾을 업데이트 : http://jsfiddle.net/6ms4T/22/

편집 :

예상대로 이전 jsfiddle이 전체를 갱신 처리하지 않았다. 이 업데이트 된 버전은 ID로 DOM 요소를 찾는 모든 경우를 식별하여 혼동을 줄여야합니다. 그러나 리팩토링해야 할 가능성이 높습니다 (http://jsfiddle.net/6ms4T/24/).

편집 :

영업 이익의 태그는 자신의 아이디로 생성 된 다양한 숫자와 문자를했지만, 마지막 자리는 밑줄로 시작되었다. 중요한 id는 정규식 /\d+$/에서 발견되었습니다. 다른 포스터에서 보여 주듯이이 문제를 해결할 수있는 방법은 여러 가지가 있습니다. 나는 개인적으로 사용자 gabitzish를 좋아했다.

+0

내 코드에서 작동하지 않습니다. qty_item_ id를 ctl00_EnquiryForm1_qty_item_에서 잘라 냈습니다. 중요하지 않다고 생각했기 때문에 코드에서 ID를 업데이트하여 어떤 이유로 든 내 작업이 전혀 작동하지 않습니다. 이것에 대한 아이디어가 있습니까? –

+0

@WebHippo; 'id^= qty_item_'은 id _starts with_'qty_item_'을 의미합니다. 실제로'ctl00 ... '으로 시작하면 확실히 찾지 못할 것입니다. [contains operator] (http://api.jquery.com/attribute-contains-selector/) 대신'id * = qty_item'을 사용해야 할 수도 있습니다. – veeTrain

+0

다시이 jsFiddle에서 작동하지만 내 ASP 형식에서는 작동하지 않습니다 , 이상하다. 불행히도, 나는 문제의 페이지에 대한 링크를 게시 할 입장이 아닙니다. –

0

당신은 일이 상대적으로 간결하게, 그리고 id의 숫자 구성 요소를 식별하고 선택의 일환으로 해당 번호를 사용하여 단지 특정 요소에 이벤트를 적용 할 수 있습니다

var idNum = this.id.match(/\d+/); 
$("#quant_" + idNum).text($("#qty_item_" + idNum).val()); 

JS Fiddle demo입니다.

참고 :

+0

작동하지 않습니다 ... 두 번째 수량은 첫 번째 입력 값으로 업데이트됩니다. – gabitzish

+0

오. 나는 그것을 다시 한번 살펴볼 것이다. –

+0

@gabitzish 네 말이 맞아. 작동하지 않아. 다음 수량이 업데이트 될 때까지 업데이트를 지연하지만 여전히 동일한 값을 반환합니다. –

1

입력 사항에 대한 정보가 들어있는 속성을 추가하십시오. 첫 번째 입력에는 값 1을, 두 번째 입력에는 "rel"속성을 추가 한 다음 li 요소에 대한 올바른 ID를 작성하는 데이 rel을 사용했습니다.

다음은 업데이트 작업 jsFiddle입니다 : http://jsfiddle.net/6ms4T/8/

0

다음과 같이 recalc() 함수의 시작이 변경됩니다.

function recalc(e){ 
    var idx = $(e.target).attr('id').split('_').pop(); 
    $("[id^=quant_" + idx + "]").text($(e.target).val()); 

... }

+0

게시 된 모든 아이디어 중에서이 코드는 제 코드에서 작동하지만 시작 부분에 '1'이라고 표기하여 목표를 정하고 가치가 업데이트됩니다 : 1, 10, 11, 12 등 –

+0

입력란 ID의 마지막 번호 (예 : qty_item_1, qty_item_2)는 수량이 표시되는 관련 텍스트 레이블을 선택하는 데 사용됩니다. – rt2800

+0

'qty_item_1'과'qty_item_2'만으로 동작하지만,'Qty_item_1'과'qty_item_1'을 업데이트 할 때 2 개 이상의'qty_item_'을 가지고 있습니다.하지만'qty_item_10'과' qty_item_11','qty_item_12' 등 –

관련 문제