2012-07-30 2 views
2

모두 cakephp (2.1.2 사용) 페이지를 만듭니다. 우리는 사용자가 얼마나 많은 필드를 입력했는지 (int) 입력하라는 메시지를 표시 한 다음 입력 된 숫자에 대해 for-loop를 사용하도록합니다. 여기 cakephp javascript 동적 업데이트

이 문제는 우리가 alert.ctp의 변수를 만들려면 어떻게해야합니까 후 할 수있는 경고

<script type="text/javascript"> 
    prompt('How many fields?','<?php print $message; ?>'); 
</script> 

의 코드 추가 페이지 여기

<h2>Please select how many fields you wish to add</h2></br> 


<?php 
print $this->Session->flash('flash', array('element' => 'alert')); 

echo $this->Form->create('Field', array('action'=>'add')); 

For(int i=0; i<'flash'; i++) 
{ 
echo $this->Form->input('name',array('label'=>'Please Enter Field Name: ', 'type'=>'text')); 
echo $this->Form->input('description',array('label'=>'Please Enter Field Description: ', 'type'=>'text')); 
} 
echo $this->Form->end('Click Here To Submit Template'); 

?> 

에 대한 코드입니다 그 변수를 for 루프에 사용하여 사용자 입력을받는 양식을 출력하는 것.

편집 :

자바 스크립트 기능 :

<script type="text/javascript"> 

var number_of_fields=prompt("How many fields?",'<?php print $message; ?>'); 
var field_html=""; 
for (i=0; i<number_of_fields; i++) 
{ 
    field_html +='<input type="text" name="data[FIELD]['+i+'][name]">'; 
} 
$("#FORMID").append(field_html); 

</script> 

보기 :

<?php 
print $this->Session->flash('flash', array('element' => 'alert')); 

echo $this->Form->create('Field', array('action'=>'add')); 



echo $this->Form->end('Click Here To Submit Template'); 

?> 

지금 오류를 가져옵니다,하지만 캔트 어떤 필드를 표시합니다. 입력란을 인쇄하려면 무엇을 입력해야합니까? (입력이 더 많아서 사용자가 필드를 만들 수 있습니까?)

답변

0

자바 스크립트에서 no : of의 값을 얻었으므로 cakeph가 입력 필드를 만드는 데 사용하는 규칙을 따라 javascript에서도 필드를 만드는 것이 좋습니다. 그래서 당신은 루프에 대한 자바 스크립트를 사용할 수있는 js 변수에 필드를 concat 및 자바 스크립트를 사용하여 양식에이 HTML 입력을 삽입합니다.

예 :

var number_of_fields=prompt("How many fields?",'<?php print $message; ?>'); 
var field_html=""; 
for (i=0; i<number_of_fields; i++) 
{ 
    field_html +='<input type="text" name="data[MODELNAME]['+i+'][name]">'; 
} 
$("#FORMID").append(field_html); 

내가이 그냥 코드 @Sreeni 편집 감각

+0

만들 것입니다 바랍니다. Javasctipt 함수가 for 루프를 가지고 있다면 우리는 뷰에 무엇을 넣을 까? – user1402677