Drag & Drop

Drag & Drop ជា​បច្ចេកទេស​ដ៏​ថ្មី​ស្រឡាង​មួយ​ទៀត​នៅ​ក្នុង HTML5 ដែល​អនុញ្ញាត​អោយ​យើង​អាច​ចុច​ចាប់​ទាញ​ធាតុ HTML ផ្សេង​ៗ​ ពី​កន្លែង​មួយ​ទៅ​កន្លែង​មួយ​ទៀត​ បាន​យ៉ាង​រហ័ស​ទាន់ចិត្ត​។ មួយវិញទៀត ស្ទើរ​គ្រប់​ browser ធំ​ៗ​ទាំងឡាយ សុទ្ធតែ​ត្រូវ​បាន​បញ្ចូល​បច្ចេកទេស​ថ្មី​នេះ​ទាំងអស់​។

ជាកិច្ច​ចាប់​ផ្តើម ដើម្បី​ចុច​ចាប់​ទាញ​ធាតុ HTML ណាមួយ យក​ទៅ​ទំលាក់​ទៅ​ក្នុង​ធាតុ HTML ណាមួយ​ផ្សេង​ទៀត យើង​ចាំបាច់​ត្រូវ​សរសេរ​កម្មវិធី​ដូច​ខាង​ក្រោម​នេះ៖
<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body style="font:14px/1.5 'Odor Mean Chey'">

	

   <script>
     function allowDrop(ev) {
        ev.preventDefault();
      }
      
      function drag(ev) {
        ev.dataTransfer.setData("text", ev.target.id);
      }
      
      function drop(ev) {
        ev.preventDefault();
        var data = ev.dataTransfer.getData("text");
        ev.target.appendChild(document.getElementById(data));
      }
    </script>
	<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    <img id="drag1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAZMlTzoryjTgxkB-eOs03HG9NfWSRfaDftdTm4VsTgbykji1BrFTHOGq842R5kZGJ9U7WmQKGxrvAT4Fs44Riw93omzwKRDti9O04i4RU-wpqE2KXcqU8Yscr_IqYB8kI2FSWvg0LkWA/s1426/download.png" 
      draggable="true" ondragstart="drag(event)" width="336" height="69" />
  </body>
</html>


ដូចនេះ យើង​ឃើញ​ថា ដំបូង​គេ​បង្អស់​ យើង​ចាំបាច់​ត្រូវ​ធ្វើ​អោយ​រូប​ដែល​ត្រូវ​ចុច​ទាញ អាច​ចុចទាញ​បាន ដោយ​កំណត់ attribute ចុច​ទាញ​របស់​វា ដែល​ជា​ draggable អោយ​ស្មើ​នឹង​តក្កអថេរ true ។

បន្ទាប់​មក​ទៀត នៅ​ពេល​យើង​ចាប់​ផ្តើម​ចុច​ទាញ​រូប​ខាង​លើ ហេតុការណ៍ ondragstart នឹង​កើត​មាន​ឡើង ដែល​បណ្តាល​អោយ​ក្បួន​ឆ្លើយ​តប​ហេតុការណ៍ drag() ត្រូវ​យក​មក​ប្រើ ហើយ​ដំណឹង​ដែល​ជា​ហេតុការណ៍ event ត្រូវ​ផ្តល់​អោយ​ក្បួន​នោះ​ជា​ស្វ័យប្រវត្តិ​។ ជាលទ្ធផល អត្តសញ្ញាណ​មាន​ប្រភេទ​ជា​អត្ថបទ​របស់​រូប​ដែល​ត្រូវ​ចុច​ទាញ ត្រូវ​បាន​កត់ត្រា​ទុក​។
function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}
បន្ទាប់​មក​ទៀត នៅ​ពេល​ដែល​យើង​អូស​រូប​ទៅ​លើ​ធាតុ​ដែល​យើង​ចង់​ទំលាក់​រូប​នៅ​ក្នុង​នោះ ហេតុការណ៍ ondragover នឹង​កើត​មាន​ឡើង ដែល​ធ្វើ​អោយ​ក្បួន​ឆ្លើយ​តប​ហេតុការណ៍ allowDrop() ត្រូវ​យក​មក​ប្រើ ហើយ​លទ្ធភាព​អាច​ទំលាក់​រូប​នៅ​ក្នង​នោះ ក៏​ត្រូវ​បានផ្តល់​អោយ​ផង​ដែរ​។
function allowDrop(ev) {
  ev.preventDefault();
}
ចុង​ក្រោយ​បំផុត នៅ​ពេល​ដែល​យើង​ទំលាក់​រូប​ចូល​ទៅ​ក្នុង​ធាតុ​ដែល​យើង​ចង់​បាន ហេតុការណ៍ ondrop ត្រូវ​កើតមាន​ឡើង ដែល​ធ្វើ​អោយ​ក្បួន​ឆ្លើយ​តប​ហេតុការណ៍ drop() ត្រូវ​បាន​យក​មក​ប្រើ ហើយ​រូប​ត្រូវ​បាន​បិទ​ភ្ជាប់​ទៅ​នឹង​ធាតុ​ចុង​ក្រោយ​នោះ​។
function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}