الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Infinite Select Elements

بدأه B.Althubaiti في 5 سبتمبر 2009 · 2 رد · 901 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

القضية :

لنفرض إنه لدي شركة أرامكوا و أريد تخزين بياناتها من حيث الموقع ( الدولة ، المدينة) ، لنفرض كذلك أن شركة أرامكوا تقع في الإمارات في مدينة فجيرة وتقع في السعودية في المنطقة الشرقية والرياض

ماأريد القيام به هو تخزين هذه المناطق في قاعدة البيانات

ماذا صنعت ؟

قمت بإداراج إثنان من الـ

select element

الأولى لاختيار الدولة

و عن طريق تقنية الأجاكس تصبح الثانية تختص بالمدن الموجودة في تلك الدولة

المشكلة :

شركة ارامكوا قد تقع في أكثر من دولة أو قد تكون موجودة في مدن مختلفة من تلك الدولة

لذا أحتاج إلى أن أضع زر يقوم بإضافة اثنان من الـ

select element

واحدة للدولة والأخرى للمدينة

وكلما أحتاج المستخدم تحديد موقع آخر عليه ضغط الزر

وهذا ماأقوم بإنشاءه الآن

موقع بيت :)

http://www.bayt.com/en/job-search-advanced/

موقع بيت يقوم تقريبا بشيء مشابه تجدون عند

Job Role/Department

بإمكانك إضافة عدد لا متناهي من

select element

قام المبرمج بتخزين قيم هذه الخيارات

داخل

hidden input

وهي طريقة ذكية :) وسأصنع مثله

لكن

لنفرض أنه المستخدم اختار

السعودية الرياض

السعودية القصيم

الكويت كويت

ثم قرر أن يغير ( السعودية الرياض ) إلى فلسطين غزة

كيف أقوم بتغير البيانات المخزنة في الـ

hidden input

الخاصة بالسعودية ، الرياض

و استبدلها بـ فلسطين غزة

مبرمج بيت يصنع ذلك ولا أعلم كيف

سأوضح أكثر

افرض أن قيم الدول كانت هكذا

السعودية = 1

فلسطين = 2

الكويت = 3

في ال

hidden fields

المختص بالدول كانت هذه القيم

1 1 3

أي السعودية السعودية الكويت

وقام المستخدم الآن بتغير السعودية الأولى إلى فلسطين

البينات يجب أن تصبح

2 1 3

كيف أقوم بذلك :) تحديد مكان التغيير

كيف صنعها مبرمج بيت :)

إذا كانت لديك طريقة مختلفة :) انرني بها

شكرًا مقدما

والسلام عليكم ورحمة الله وبركاته

تم تعديل هذه المشاركة بواسطة B.Althubaiti في 5 سبتمبر 2009 في 09:08

#2

هل علي أن أكون مصفوفة من الـ سيليكت إليمنتس

<select name="country[ ]" id="id_country[ ]" onChange="showCity(this.value)"  >
	 <option value="" selected="selected">select country </option>
	 </select>

إذا كونت مصفوفه بهذا الشكل

كيف أستطيع التمييز في الجافا سكرتب عن الأولى والثانية أوالثالثة أو الرابعة ....

:)

مبرمج بيت لم يستخدم مصفوفة على مايبدو

post-207748-1252129216_thumb.jpg

تم تعديل هذه المشاركة بواسطة B.Althubaiti في 5 سبتمبر 2009 في 08:41

#3

إممممممم

و سحبنا كود الـ JAVA SCRIPT لـ بيت :)

راح أتعلم منه الطريقة و لو أحد وده يقرأه هذا هو :)

دمتم بود

		
					<h4>Company Industry:</h4>
					<p><select name="jb_cat_list_1" id="id-jb_cat_list_1" onchange="java script:getMultiValues('jb_cat_list', '15','1');"   >
<option value="" selected="selected">- No preference -</option>
<option value="1" >Accounting/Auditing</option>
<option value="41" >Administration</option>

<option value="3" >Advertising</option>
<option value="4" >Agriculture/Forestry/Fishing</option>
</select>
		<span id="multi-jb_cat_list-select"></span><br />
		<a class="bullet blt-add"  id="add-jb_cat_list-select" href="java script:addSelect('jb_cat_list','15');" >Add Another</a>
		<input id="id-jb_cat_list" name="jb_cat_list" type="hidden" value="" />

/*
  * Added By Fadi Salameh (ft@bayt.net)
  * Multiple Select 
  */

 function addSelect( fieldName ,max ){
	 var numOfSelect = 1;
	 while ( $('#id-'+fieldName+'_'+numOfSelect).html() != null ) {numOfSelect++;}

	 if ( max >= numOfSelect ) {
		 BuildSelect( $('#id-'+fieldName+'_1').html() , fieldName , max , numOfSelect);
	 } else {
		 for ( var i = 1; i <= max; i++ ) {
			 var class_hide = $('#id-'+fieldName+'_'+i).attr('className');
			 if (class_hide == "hide" ) {
				 $('#id-'+fieldName+'_'+i).show();
				 $('#id-'+fieldName+'_'+i).attr('className','');
				 $('#rem-'+fieldName+'_'+i+'-select').show();
				 $('#rem-'+fieldName+'_'+i+'-select').attr('className','');
				 $('#add-'+fieldName+'-select').show();			
				 break
			 } 
		 }
		 for ( var i = 1; i <= max; i++ ) {
			 var class_hide = $('#id-'+fieldName+'_'+i).attr('className');
			 if ( class_hide == "hide" ) {
				 $('#add-'+fieldName+'-select').show();
				 break
			 } else {
				 $('#add-'+fieldName+'-select').hide();
			 }
		 }
	 }
 }

 function removeSelect( fieldName , i , max) {
	 var class_hide = $('#id-'+fieldName+'_'+i).attr('className');
	 if ( !class_hide  ) {
		 $('#id-'+fieldName+'_'+i).attr('className','hide');
		 $("select[name="+fieldName+"_"+i+"] option[value='']").attr("selected","selected");
		 $('#id-'+fieldName+'_'+i).hide();
		 $('#add-'+fieldName+'-select').show();
		 $('#rem-'+fieldName+'_'+i+'-select').attr('className','hide');
		 $('#rem-'+fieldName+'_'+i+'-select').hide();
	 }
	 for ( var i = max; i > 1; i-- ) {
		 var class_hide = $('#id-'+fieldName+'_'+i).attr('className');
		 if ( class_hide =="hide" ) {$('#add-'+fieldName+'-select').show();}
	 }
	 var numOfSelect = 1;
	 while ( $('#id-'+fieldName+'_'+numOfSelect).html() != null ) {numOfSelect++;}
	 if ( max != numOfSelect ) {$('#add-'+fieldName+'-select').show();}
	 getMultiValues (fieldName ,max ,numOfSelect)
 } 

 function getMultiValues (fieldName ,max , numOfSelect) {
	 var values = "";
	 for ( var i = 1; i <= max; i++ ) {
		 var class_hide = $('#id-'+fieldName+'_'+i).attr('className');
		 if ( (!class_hide || class_hide == 'req' ) && $('#id-'+fieldName+'_'+i).val() != '' && $('#id-'+fieldName+'_'+i).html() != null ) {
			 $('#id-'+fieldName+'_'+i).val();
			 values = values + $('#id-'+fieldName+'_'+i).val() + " ";
		 }
	 }
	 $("input[name="+fieldName+"]").val(values);
 }

 function BuildSelect( inhtml , fieldName , max , numOfSelect)
 {
	 var newSelectCoded = '<select onchange="java script:getMultiValues(\''+fieldName+'\', \''+max+'\',\''+numOfSelect+'\');" id="id-'+fieldName+'_'+numOfSelect+'" name="'+fieldName+'_'+numOfSelect+'">'+inhtml+'</select>';
	 var removeLink = ' <a id="rem-'+fieldName+'_'+numOfSelect+'-select" class="" href = "java script:removeSelect(\''+fieldName+'\',\''+numOfSelect+'\',\''+max+'\');" ><img src="/images/icons/blt-close.gif" alt="x" /></a>';
	 $('#multi-'+fieldName+'-select').before(newSelectCoded);
	 $('#multi-'+fieldName+'-select').before(removeLink);
	 $("select[name="+fieldName+"_"+numOfSelect+"] option[value='']").attr("selected","selected");
	 var numOfSelect = 1;
	 while ( $('#id-'+fieldName+'_'+numOfSelect).html() != null ) {
		 var class_hide = $('#id-'+fieldName+'_'+numOfSelect).attr('className');
		 if ( class_hide == "hide" ) {
			 $('#add-'+fieldName+'-select').show();
			 break
		 } else if (max == numOfSelect) {$('#add-'+fieldName+'-select').hide();}
		 numOfSelect++;
	 }
 }

 function clearMultiSelect( fieldName , max )
 {
	 var form_element = $('*[name='+fieldName+']');
	 var selected_values = $(form_element).val().split(" ")
	 for (i=2; i<= selected_values.length; i++) {
		 removeSelect( fieldName , i ,max);	
	 }
	 $("#id-"+fieldName+"_1 option:selected")[0].defaultSelected = false;
	 form_element.val("");
 }

</div>

تم تعديل هذه المشاركة بواسطة B.Althubaiti في 5 سبتمبر 2009 في 09:32

مواضيع مشابهة